Swift:如何创建日期时间戳和格式为ISO 8601,RFC 3339,UTC时区?
发布时间:2020-12-14 06:07:21 所属栏目:百科 来源:网络整理
导读:如何生成日期时间戳,使用 ISO 8601和 RFC 3339的格式标准? 目标是一个字符串,看起来像这样: "2015-01-01T00:00:00.000Z" 格式: 年,月,日,作为“XXXX-XX-XX” 字母“T”作为分隔符 小时,分钟,秒,毫秒,作为“XX:XX:XX.XXX”。 字母“Z”作为零偏
如何生成日期时间戳,使用
ISO 8601和
RFC 3339的格式标准?
目标是一个字符串,看起来像这样: "2015-01-01T00:00:00.000Z" 格式: >年,月,日,作为“XXXX-XX-XX” 最佳案例: > Swift源代码简单,简单,直观。 我搜索StackOverflow,谷歌,苹果等,并没有找到一个Swift答案这个。 最有希望的课程是 相关Q& A:How do I get ISO 8601 date in iOS? 这是我到目前为止最好的: var now = NSDate() var formatter = NSDateFormatter() formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) println(formatter.stringFromDate(now))
Xcode 8.2?Swift 3.0.2
extension Date { static let iso8601Formatter: DateFormatter = { let formatter = DateFormatter() formatter.calendar = Calendar(identifier: .iso8601) formatter.locale = Locale(identifier: "en_US_POSIX") formatter.timeZone = TimeZone(secondsFromGMT: 0) formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX" return formatter }() var iso8601: String { return Date.iso8601Formatter.string(from: self) } } extension String { var dateFromISO8601: Date? { return Date.iso8601Formatter.date(from: self) } } 用法: let stringFromDate = Date().iso8601 // "2016-06-18T05:18:27.935Z" if let dateFromString = stringFromDate.dateFromISO8601 { print(dateFromString.iso8601) // "2016-06-18T05:18:27.935Z" } Xcode 7.3.1?Swift 2.2.1 extension NSDate { struct Formatter { static let iso8601: NSDateFormatter = { let formatter = NSDateFormatter() formatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601) formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX" return formatter }() } var iso8601: String { return Formatter.iso8601.stringFromDate(self) } } extension String { var dateFromISO8601: NSDate? { return NSDate.Formatter.iso8601.dateFromString(self) } } 用法: let stringFromDate = NSDate().iso8601 // "2016-06-18T05:18:27.935Z" if let dateFromString = stringFromDate.dateFromISO8601 { print(dateFromString.iso8601) // "2016-06-18T05:18:27.935Z" } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |