【发布时间】:2019-05-20 23:39:03
【问题描述】:
我正在尝试转换 12 位 c# 日期时间刻度格式化时间。 (648000000000)。在以下链接的帮助下,我向我的代码 How to get 18-digit current timestamp in Swift? 添加了一个扩展。
extension Date {
init(ticks: UInt64) {
self.init(timeIntervalSince1970: Double(ticks)/10_000_000 - 62_135_596_800)
}
}
让日期 = 日期(刻度:648000000000)
当我尝试查看结果日期时,它会打印以下内容;
0001-01-03 18:00:00 +0000
但是,当我尝试将其转换为小时和分钟格式时,输出与 19:55 无关
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
dateFormatter.string(from: date)
我的第一个问题是如何将其格式化为仅获得 18:00。其次是为什么我只打印日期时打印的是 18:00,而我格式化时是 19:55?
【问题讨论】:
-
该方法预计 “自 0001-01-01 以来的时间以 100 纳秒为间隔测量” - 这将是一个更大的数字(大约 18 位数字)。您的时间戳来自哪里,它代表什么日期?
-
那个时间戳来自我们的服务器,我需要以某种方式转换它,实际上我只需要时钟(18:00)日期对于我们的案例并不重要。 @MartinR
-
我真的怀疑它是
19:55,因为您的问题是print(date)显示您在UTC/+0时区的时间并且日期格式化程序正在使用您当前的本地区域。最小时区偏移是 1/4 小时的乘数,而不是 5 分钟。 -
添加:dateFormatter.timeZone = TimeZone(缩写:"UTC")
-
你至少应该有一个时间戳的例子,它代表什么日期,服务器使用什么时区。否则纯属猜测。一旦你知道了这些事情,我想你可以自己弄清楚,因为网上有很多例子。
标签: ios swift date nsdateformatter