如何在 swift 中将 UNIX 纪元转换为 ISO 8601?
How do I translate a UNIX epoch to ISO 8601 in swift?
我看到有人在 Swift 中询问如何将 ISO 8601 字符串转换为 NSDate,但我需要完全相反的方法。
我了解如何使用 'timeIntervalSince1970' (Get Unix Epoch Time in Swift) 获取纪元,其中 returns 类似于“1427058740.08374”,但如何将其转换为 ISO 8601?
所需字符串:2015-03-22T20:51:41+00:00
extension NSDate {
var formattedISO8601: String {
let formatter = NSDateFormatter()
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
formatter.dateFormat = "yyyy-MM-dd'T'hh:mm:SSxxxxx" //+00:00
return formatter.stringFromDate(self)
}
}
NSDate(timeIntervalSince1970: 1427058740.08374).formattedISO8601 // "2015-03-22T09:12:08+00:00"
@LeoDabus在Swift4的精彩回答:
extension NSDate {
var formattedISO8601: String {
let formatter = DateFormatter()
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) as TimeZone!
formatter.dateFormat = "yyyy-MM-dd'T'hh:mm:SSxxxxx" //+00:00
return formatter.string(from: self as Date)
}
}
并使用它:
NSDate(timeIntervalSince1970: 1427058740.08374).formattedISO8601 // "2015-03-22T09:12:08+00:00"
Swift 5
如果您的目标是 iOS 11.0+ / macOS 10.13+,您只需使用 ISO8601DateFormatter
和 withInternetDateTime
选项,如下所示:
let unixTime = 1583358247
let date = Date(timeIntervalSince1970: TimeInterval(unixTime))
let iso8601DateFormatter = ISO8601DateFormatter()
iso8601DateFormatter.formatOptions = [.withInternetDateTime]
let string = iso8601DateFormatter.string(from: date)
// string looks like "2020-03-04T21:44:07Z"
我看到有人在 Swift 中询问如何将 ISO 8601 字符串转换为 NSDate,但我需要完全相反的方法。
我了解如何使用 'timeIntervalSince1970' (Get Unix Epoch Time in Swift) 获取纪元,其中 returns 类似于“1427058740.08374”,但如何将其转换为 ISO 8601?
所需字符串:2015-03-22T20:51:41+00:00
extension NSDate {
var formattedISO8601: String {
let formatter = NSDateFormatter()
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
formatter.dateFormat = "yyyy-MM-dd'T'hh:mm:SSxxxxx" //+00:00
return formatter.stringFromDate(self)
}
}
NSDate(timeIntervalSince1970: 1427058740.08374).formattedISO8601 // "2015-03-22T09:12:08+00:00"
@LeoDabus在Swift4的精彩回答:
extension NSDate {
var formattedISO8601: String {
let formatter = DateFormatter()
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) as TimeZone!
formatter.dateFormat = "yyyy-MM-dd'T'hh:mm:SSxxxxx" //+00:00
return formatter.string(from: self as Date)
}
}
并使用它:
NSDate(timeIntervalSince1970: 1427058740.08374).formattedISO8601 // "2015-03-22T09:12:08+00:00"
Swift 5
如果您的目标是 iOS 11.0+ / macOS 10.13+,您只需使用 ISO8601DateFormatter
和 withInternetDateTime
选项,如下所示:
let unixTime = 1583358247
let date = Date(timeIntervalSince1970: TimeInterval(unixTime))
let iso8601DateFormatter = ISO8601DateFormatter()
iso8601DateFormatter.formatOptions = [.withInternetDateTime]
let string = iso8601DateFormatter.string(from: date)
// string looks like "2020-03-04T21:44:07Z"