将JSON日期转换为Swift兼容的日期
Swift - Converting JSON date to Swift compatible date
我试图转换一个日期,其中javascript代码正在使用date()函数生成当前日期。但是当我打印出来的时候,我得到的是nil
我代码: let date2 = data?[0] as! String
println(date2)
var str = "2013-07-21T19:32:00Z"
var dateFor: NSDateFormatter = NSDateFormatter()
dateFor.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
var Date: NSDate? = dateFor.dateFromString(date2)
println(Date)
date2 =>正在打印2015-05-15T21:58:00.066ZDate =>打印nilSTR仅用于测试,并且工作完美。
有人看到代码中的缺陷了吗?
问题是str
和date2
两个日期格式不相同。str
格式为"yyyy-MM-dd'T'HH:mm:ssZ"
, date2
格式为"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
。此外,在解析固定格式的日期时,您应该始终将dateFormatter的区域设置为"en_US_POSIX"
:
let date2 = "2015-05-15T21:58:00.066Z"
let dateFormatter = DateFormatter()
dateFormatter.locale = .init(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
if let date = dateFormatter.date(from: date2) {
print(date) // "2015-05-15 21:58:00 +0000"
}
以后每个文档使用ISO8601DateFormatter
在macOS 10.12及以上版本或iOS 10及以上版本中,请使用ISO8601DateFormatter类在使用ISO8601日期时表示。
import Foundation
let isoStr = "2020-02-18T11:40:01.000Z"
let isoDateFormatter = ISO8601DateFormatter()
isoDateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
isoDateFormatter.formatOptions = [
.withFullDate,
.withFullTime,
.withDashSeparatorInDate,
.withFractionalSeconds]
if let isoDateFormatted = isoDateFormatter.date(from: isoStr) {
print(isoDateFormatted)
}
Swift 4+
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let str = "2013-07-21T19:32:00Z"
if let date = dateFormatter.date(from: str) {
print(date)
}
输出:2013-07-21 19:32:00 + 0000
相关文章:
- 比较从函数和生成的日期对象
- Json数据包含日期和时间格式
- Javascript日期格式类似于ISO,但本地
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 如何在JavaScript中延长当前日期
- 两位数的月份日期验证
- 更改angularjs中的日期-时间格式
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- NodeJS日期格式不起作用
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 使用当前日期生成随机id
- primefaces日历可以禁用过去的日期和时间吗
- 提前阅读日期
- 在JavaScript中拆分日期字符串的更好方法是什么
- 查找最短和最长日期
- 将日期和时间转换为UTC格式的日期-Javascript
- jquery日期选择器年份范围默认值
- jquery日期选择器失去了交互性
- 将JSON日期转换为Swift兼容的日期