小编典典

iOS NSDate()返回错误的时间

swift

我正在尝试使用获取Swift中的当前日期NSDate()。创建断点并停止应用程序时,我发现设备的系统时间相差3个小时。应用程序正在真实的iPhone上运行。如何解决这个问题?

我还确保在App Delegate中编写以下内容:

NSTimeZone.setDefaultTimeZone(NSTimeZone(name: "Europe/Kiev")!)

但这仍然行不通。


阅读 177

收藏
2020-07-07

共1个答案

小编典典

它不会返回错误的时间。它返回正确的时间。NSDate没有任何时区信息。现在,当我们调用NSDate()时,我的计算机和您的计算机将报告完全相同的时间。

NSLog在UTC中显示NSDate。这就是它所显示的。因此,如果我们俩现在都致电NSLog,您的计算机将记录与我相同的日期和时间。因为它是相同的日期和时间。

如果要处理NSDate(例如,向用户显示日期和时间),请使用NSCalendar。NSCalendar会将世界各地都相同的NSDate转换为您想要在用户界面中显示的值,伦敦或基辅的值将有所不同。如果我现在看手表,将会看到与您看到的时间不同的时间,这就是NSCalendar的目的。

2020-07-07