iOS NSDate() 返回错误的时间

标签 ios swift nsdate

我正在尝试使用 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/

相关文章:

ios - 为什么我们在 fetchRequest() 声明之前放置 @nonobjc 属性?

ios - 如何在 Firebase 中显示 autoID 子项下保存的数据?

swift - 如何从开头和结尾包含 # 且末尾不包含空格的字符串中获取主题标签?

ios - 将公历日期字符串转换为伊斯兰日期会给出正确和错误的结果

ios - 我如何创建一个将在 iPad 上使用弹出窗口的 segue,并推送到 iPhone 上的导航堆栈?

iphone - 如何根据当前日期获取下一个 15 天的日期?

iphone - 我的新版本iOS应用程序仅在从应用程序商店加载时加载时崩溃

html - 在iOS的hpple库中对Xpath查询使用通配符

iphone - 如何在 iPhone 中获取时差

iphone - iOS 系统时间更新导致 NSTimer/NSDate funkiness