ios - 日期到毫秒并在 Swift 中返回日期

标签 ios swift date time

我正在使用 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 {
        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)

关于ios - 日期到毫秒并在 Swift 中返回日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54678696/

相关文章:

Java Criteria API 和 java.util.Date 列上的操作

ios - 在 ReactiveCocoa 中链接依赖信号

ios - UIImage View 重置/清空

ios - 更快的 UIImage - Base64 转换

ios - 使用 NSURLSession 发出 http DELETE 请求

swift - 在 Swift 4 for MacOS X 中,如何在 NSBox 中嵌入 NSStackView?

swift - 在 tvOS 上的 SwiftUI 中更改按钮的颜色

ios - 如何使 SFSpeechRecongnizer 可重用于每个 UIViewControllers

excel - 当另一个单元格的值发生变化时(通过公式计算),单元格中的日期自动更新

javascript - 使用 Javascript 将 DynamodB 日期格式字符串转换为日期格式