添加/设置日期的时代部分

时间:2019-01-11 16:42:58

标签: swift foundation

我使用Foundation的Calendar类型的以下功能:

  • date(byAdding:value:to:wrappingComponents:)
  • date(bySetting:value:of:)

除了.era组件之外,它们都可以正常工作。

var calendar = Calendar(identifier: .iso8601)
calendar.locale = Locale(identifier: "en")
calendar.timeZone = TimeZone(identifier: "GMT")!
let formatter = DateFormatter()
formatter.calendar = calendar
formatter.timeZone = calendar.timeZone
formatter.dateFormat = "G yyyy/MM/dd HH:mm:ss.SSS zzz"

let date = formatter.date(from: "AD 2019/01/10 20:43:03.752 GMT")!

if let result = calendar.date(byAdding: .era, value: 1, to: date, wrappingComponents: true) {
  print(formatter.string(from: result))
} else {
  print("no result")
}

if let result = calendar.date(bySetting: .era, value: 0, of: date) {
  print(formatter.string(from: result))
} else {
  print("no result")
}

这段代码给了我这个结果:

AD 2019/01/10 20:43:03.752 GMT
no result

即使将wrappingComponents设置为true,添加纪元也只会返回相同的日期,并且设置纪元不会产生任何结果。

我检查了这些方法的文档,但他们没有说是这种情况或原因。

我在做什么错了?

0 个答案:

没有答案