【发布时间】:2017-07-15 14:51:49
【问题描述】:
我正在使用内置的 DateComponentsFormatter 来计算当前日期和另一个日期之间的年数。如果日期过早,例如 1940,则返回的单位是错误的:
let dateComponents = DateComponents(year: 1940, month: 1, day: 2, hour: 1, minute: 1, second: 1)
let date = Calendar.current.date(from: dateComponents)!
let dateComponentsFormatter = DateComponentsFormatter()
dateComponentsFormatter.allowedUnits = [.year]
dateComponentsFormatter.unitsStyle = .full
print(dateComponentsFormatter.string(from: abs(date.timeIntervalSinceNow)))
这会打印出不正确的-58 years。这是苹果的错误吗?我做错了吗?
【问题讨论】:
-
print(dateComponentsFormatter.string(from: date, to: Date()) ?? "") -
@LeoDabus 谢谢我也尝试过更好的方法,但并不总是提供相同的价值......有时是 70 年,有时是 69 年
-
它给了我 77 年
-
您可能遇到了时代问题?
-
@Stephen 每次使用 2088 时都会给我“-70 年\n”。顺便说一句,添加时代组件不会有所作为
标签: ios swift nsdateformatter nsdatecomponentsformatter