NSDate 日期返回的时间比应有的时间少 2 小时

发布于 2024-10-31 11:23:28 字数 172 浏览 1 评论 0原文

当我调用 [NSDate date] 时,它返回的时间比应有的时间少了 2 小时。我检查了我的电脑时钟设置,一切正常。我检查了 iPhone 中的设置,时区和时钟都正常。甚至模拟器也会在顶部工具栏上显示正确的时间。但是当我尝试记录当前日期时,它显示的时间比应有的时间少了 2 小时。我不知道该去哪里寻找。

When i call [NSDate date] it returns 2 hours less than it should. I've checked my computer clock settings and they are all ok. I've checked settings in iPhone and time zone and clock are all OK. Even simulator shows correct time on top toolbar. But when I try to log current date it shows 2 hours less than it should. I ran out of ideas where to look.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

何以心动 2024-11-07 11:23:28

[NSDate date] 返回的所有日期均采用 GMT 时区。

当您使用任何 NSDateFormatter 时,只需设置时区,它就会打印出正确的时间。

All dates returned by [NSDate date] are in the GMT time zone.

When you use any NSDateFormatter, just set the time zone and it will print out the correct time.

背叛残局 2024-11-07 11:23:28

仔细查看 NSLog() 语句的输出。您将看到输出始终包含使用标准 UTC 的时区。因此,考虑到时区,日期实际上是正确的。

Look carefully at the output of the NSLog() statement. You will see that the output always contains the timezone using standard UTC. Therefore, the date is actually correct, taking into account the timezone.

守不住的情 2024-11-07 11:23:28

我在这里找到了我的解决方案: 如何将时间转换为 iPhone 设备的时区?

因此,如果您想将 [NSDate date] 更改为指向当地时间,只需使用上面链接中提供的代码即可。并且不要忘记将 sourceTimeZone 上的 timeZoneWithAbbreviation 从 EST 更改为 GMT(因为 NSDate 始终为 GMT)

再次感谢大家的帮助..

I found my solution here: How to convert time to the time zone of the iPhone device?

So if you ever want to change [NSDate date] to point to local time just use the code provided in the link above. And dont forget to change timeZoneWithAbbreviation on sourceTimeZone from EST to GMT (because NSDate is always in GMT)

Once again thanks everyone for helping out..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文