【发布时间】:2017-03-01 06:24:15
【问题描述】:
我正在使用 UTC 中的当前时间,并将其放入纳秒,然后我需要采用纳秒并返回到本地时间的日期。我可以将时间精确到纳秒,然后返回到日期字符串,但是当我从字符串到日期时,时间会变得很复杂。
//Date to milliseconds
func currentTimeInMiliseconds() -> Int! {
let currentDate = NSDate()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
let date = dateFormatter.date(from: dateFormatter.string(from: currentDate as Date))
let nowDouble = date!.timeIntervalSince1970
return Int(nowDouble*1000)
}
//Milliseconds to date
extension Int {
func dateFromMilliseconds(format:String) -> Date {
let date : NSDate! = NSDate(timeIntervalSince1970:Double(self) / 1000.0)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
dateFormatter.timeZone = TimeZone.current
let timeStamp = dateFormatter.string(from: date as Date)
let formatter = DateFormatter()
formatter.dateFormat = format
return ( formatter.date( from: timeStamp ) )!
}
}
//时间戳正确但返回日期不正确
【问题讨论】:
-
将日期转换为字符串并立即返回日期(在
currentTimeInMiliseconds())的目的是什么? -
我工作的公司以毫秒为单位存储所有日期
-
但是什么是双重转换日期 -> 字符串 -> 日期以及代码中缺少的给定
format是什么? -
您正在将日期转换为字符串,然后又回到相同的日期,这似乎没用。再一次,
format使用的日期格式是什么?其实Int(Date().timeIntervalSince1970 * 1000)可以替换整个功能。NSDate只是一个不考虑时区的双精度值 -
当您的意思似乎是 毫秒 时,您似乎在问题中使用了 nanoseconds。一毫秒有一百万纳秒,所以这不是一个无关紧要的错误。