如果gmt偏移部分总是显示+0000,那么它的用途是什么?另外我不明白[myDate说明]。文档说它应该显示gmt偏移量和dst信息。我得到与[NSDate日期]相同的东西。
对我来说,如果我使用[NSDate日期]来获取当前日期并且是在下午2点之后我得到明天的日期,因为我在-10时区。更不用说我今天遇到的NSDateformatter问题。
我是否正确看到了这个?有趣的是我似乎记得看到[NSDate date]返回2011-03-06 11:00:00 -36000,或者我认为我看到了2011-03-06 11:00:00 -10000。
我可以使用它,但也许有人可以解释这一点,以帮助我更好地理解NSDate。
答案 0 :(得分:20)
NSDate返回当前日期。虽然它可以在不同的语言环境/时区中转换为字符串格式,但NSDate没有时区的内部概念。 NSDates不受任何特定区域的约束。如果您和世界上的任何其他人同时询问您的设备[NSDate日期],您将得到相同的结果 - 不是因为它总是以GMT返回,而是因为它不以特定于时区的方式返回。在可可,约会是地球历史上的一个特定时刻。您如何撰写日期与您的日历,时区和地区相关。
你没有得到明天的约会,你得到了正确的约会,然后注意到如果以GMT表示,它会给出不同的一天。这是正确的日期,只是与你想要的不同。
'description'是从NSObject重写的方法。当您对NSLog一个对象时,内部发生的是调用description方法并打印返回的字符串。因此,您应该从记录object
和[object description]
得到相同的结果,因为前者调用描述并打印该字符串,后者调用description然后调用结果字符串上的描述并打印出来。 NSStrings作为描述的结果返回。
这应该是默认行为,但要获得有意义的描述,请尝试:
NSLog(@"%@", [[NSDate date] descriptionWithCalendarFormat:nil
timeZone:[NSTimeZone localTimeZone] locale:[NSLocale currentLocale]]);
如果仍然以GMT身份登录,那么您的设备会认为自己处于GMT状态。我不知道模拟器对这类事情有多可靠。
答案 1 :(得分:-1)
在 Swift :
NSDate()为我们提供了一个不可知日期的描述,它始终返回UTC + 0日期时间,与设备的时区无关:
print(NSDate())
.descriptionWithLocale(NSLocale.currentLocale())!为我们提供了本地化日期的描述UTC + N日期时间,其中N表示UTC + 0与当前本地日期之间的偏移(正或负)时间:
print(NSDate().descriptionWithLocale(NSLocale.currentLocale())!)