提问人:Binh Ho 提问时间:10/13/2023 最后编辑:Binh Ho 更新时间:10/13/2023 访问量:57
Swift NSDateFormatter 返回一个奇怪的年份 0005 而不是 2023 [已关闭]
Swift NSDateFormatter return a strange year 0005 instead 2023 [closed]
问:
我使用的是非常简单的日期格式,但有些设备返回错误的年份。这只发生在日本的 1 台设备上,所以我无法重现它。
let timeStamp = Date().timeIntervalSince1970
let date = Date(timeIntervalSince1970: timeStamp)
let dateFormatter = DateFormatter()
dateFormatter.locale = NSLocale.current
dateFormatter.dateFormat = format
let result = dateFormatter.string(from: date)
print(result)
结果是0005-10-13
呵呵,救命!
答:
1赞
Binh Ho
10/13/2023
#1
好的,我发现了问题。如果设备将日历设置为日本,则会发生此问题。要修复它,只需添加如下所示。
dateFormatter.calendar = Calendar(identifier: .gregorian)
感谢@Martheen
评论
1赞
Duncan C
10/13/2023
是的,如果这是您在代码中期望的,您应该始终明确请求公历。(使用用户的本地日历来显示日期是合理的,甚至建议这样做。中国、日本或以色列的某个人可能希望在他们当地的(非公历)中查看他们的日期
评论
timeStamp/1000.0
为什么???当存在原生 swift 类型时,请停止使用 NS 类型Locale
DateFormatter
dateFormat
DateFormatter