MongoDB 和 iOS 中的 ISO8601 格式不同
ISO8601 Format are different in MongoDB and iOS
我想post Date
IOS8601
格式从 iOS 到 NodeJS(mongoDB),然后从 NodeJS 到 iOS.
但是两个平台的日期格式不同。
iOS 边:2019-05-26T17:10:10Z
mongoDB 边:2019-05-26T17:10:10.000Z
这意味着日期示例 post 到 mongoDB,然后日期返回额外的 .000
。
对于iOS:
extension Date {
var ISO8601String: String? {
let formatter = ISO8601DateFormatter()
return formatter.string(from: self)
}
}
ISO8601String 输出为:YYYY-MM-ddTHH:mm:ssZ
对于mongoDB
架构:
var FooSchema = Schema({
date: {
type: Date,
required: true
}
})
用法:
let date = new Date(req.body.date) // I also used req.body.date directlly
new Foo(date: date)
在 iOS 方面添加了 ISO8601 date
.000
。
这是 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
这是 doc reference:
我是否必须至少从一侧转换?
在 iOS 中,您可以在 iOS 11 及更高版本中生成包含毫秒的格式化程序:
let formatter = ISO8601DateFormatter()
formatter.formatOptions.insert(.withFractionalSeconds)
如果你需要对之前的 iOS 版本执行此操作,你必须使用 DateFormatter
:
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSX"
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
我想post Date
IOS8601
格式从 iOS 到 NodeJS(mongoDB),然后从 NodeJS 到 iOS.
但是两个平台的日期格式不同。
iOS 边:2019-05-26T17:10:10Z mongoDB 边:2019-05-26T17:10:10.000Z
这意味着日期示例 post 到 mongoDB,然后日期返回额外的 .000
。
对于iOS:
extension Date {
var ISO8601String: String? {
let formatter = ISO8601DateFormatter()
return formatter.string(from: self)
}
}
ISO8601String 输出为:YYYY-MM-ddTHH:mm:ssZ
对于mongoDB
架构:
var FooSchema = Schema({
date: {
type: Date,
required: true
}
})
用法:
let date = new Date(req.body.date) // I also used req.body.date directlly
new Foo(date: date)
在 iOS 方面添加了 ISO8601 date
.000
。
这是 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
这是 doc reference:
我是否必须至少从一侧转换?
在 iOS 中,您可以在 iOS 11 及更高版本中生成包含毫秒的格式化程序:
let formatter = ISO8601DateFormatter()
formatter.formatOptions.insert(.withFractionalSeconds)
如果你需要对之前的 iOS 版本执行此操作,你必须使用 DateFormatter
:
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSX"
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)