NSDate 日期返回的时间比应有的时间少 2 小时
当我调用 [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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
[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.
仔细查看 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.
我在这里找到了我的解决方案: 如何将时间转换为 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..