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)