我使用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,添加纪元也只会返回相同的日期,并且设置纪元不会产生任何结果。
我检查了这些方法的文档,但他们没有说是这种情况或原因。
我在做什么错了?