我将当前时间(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 ) )! } }
//时间戳正确,但返回的日期不正确
我不明白您为什么要对字符串做任何事情…
extension Date { var millisecondsSince1970:Int64 { return Int64((self.timeIntervalSince1970 * 1000.0).rounded()) } init(milliseconds:Int64) { self = Date(timeIntervalSince1970: TimeInterval(milliseconds) / 1000) } } Date().millisecondsSince1970 // 1476889390939 Date(milliseconds: 0) // "Dec 31, 1969, 4:00 PM" (PDT variant of 1970 UTC)