【发布时间】:2018-07-30 18:00:04
【问题描述】:
我在 iOS 上有一个应用程序,正在移植到 Android 上。我在处理时间方面遇到了问题。
在 iOS 上,我使用以下方式存储时间点:
Int(NSDate().timeIntervalSince1970-0.5)
并使用以下方法将其转换为 HH:MM:SS:
private let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm:ss"
return dateFormatter.string(from: Date(timeIntervalSince1970: value))
在 Android(Kotlin) 上存储我使用的时间点:System.currentTimeMillis()/1000
对于转换:
LocalTime.MIN.plus(Duration.ofSeconds(xVal)).toString())
问题是转换后的值提前 6 小时(可能或多或少,但我只看 HH:MM:SS)。据我所知,我在 android 上获得时间的方式是正确的,我认为问题在于我在转换它时。我一直在寻找更多将时间转换为时间间隔的方法,但我无法让它发挥作用。大多数帖子只是将秒转换为 HH:MM:SS,所以这些都是不可能的。我的 iOS 代码相当于什么?
编辑 我也尝试过使用这种方法来转换它仍然是 6 小时,即使我给它一个时区:
val cal = Calendar.getInstance()
cal.timeInMillis = xVal * 1000L
cal.timeZone = TimeZone.getTimeZone(TimeZone.getDefault().displayName)
Log.i("This is the cal value",cal.get(Calendar.HOUR_OF_DAY).toString())
【问题讨论】:
-
您在 UTC 时区吗?如果不是,您需要在转换时设置时区,否则它将关闭
-
问题已经回答..检查stackoverflow.com/questions/11357945/…
-
@MuhammadHassaan 正如我在未从 Unix Epoch 转换时间的问题中所述
-
@tyczj 我将如何获取当前时区并应用于该值?
-
一个简单的google搜索就可以回答如何获取时区,这里是一个基本的例子stackoverflow.com/questions/6088778/…
标签: android ios datetime kotlin