我正在尝试使用 NSDate()
获取 Swift 中的当前日期。当我创建断点并停止应用程序时,我可以看到与设备的系统时间有3个小时的差异。应用程序在真实的 iPhone 上运行。如何解决这个问题?
为了确定,我还在 App Delegate 中编写了以下内容:
NSTimeZone.setDefaultTimeZone(NSTimeZone(name: "Europe/Kiev")!)
但是还是不行。
最佳答案
它不会返回错误的时间。它返回的正是正确的时间。 NSDate 没有任何时区信息。现在,当我们调用 NSDate() 时,我的计算机和你的计算机将报告完全相同的时间。
NSLog 显示 UTC 格式的 NSDate。这就是它所显示的内容。因此,如果我们现在都调用 NSLog,您的计算机将记录与我的计算机相同的日期和时间。因为日期和时间相同。
如果您想处理 NSDate(例如,向用户显示日期和时间),您可以使用 NSCalendar。 NSCalendar 将 NSDate(在世界各地都相同)转换为您想要在用户界面中显示的值(在伦敦或基辅会有所不同)。如果我现在看 watch ,我会看到与你在 watch 上看到的时间不同的时间,这就是 NSCalendar 的用途。
关于iOS NSDate() 返回错误的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39230494/