use*_*859 6 iphone cocoa-touch nsdate
我傻了吗?一直以来我都认为[NSDate date]返回了当地的日期和时间.今天在NSStringformatter/stringFromdate/dateFromString遇到麻烦后,我发现我的[NSDate日期]正在返回2011-03-06 11:00:00 +0000.在研究完之后,我看到[NSDate date]返回一个始终为GMT的原始日期.
如果gmt偏移部分总是显示+0000,那么它的用途是什么?另外我不明白[myDate说明].文档说它应该显示gmt偏移量和dst信息.我得到与[NSDate日期]相同的东西.
最重要的是,如果我使用[NSDate日期]来获取当前日期,那么它是在下午2点之后我得到明天的日期,因为我在-10时区.更不用说我今天遇到的NSDateformatter问题.
我看到了吗?有趣的是我似乎记得看到[NSDate日期]返回2011-03-06 11:00:00 -36000,或者我认为我看到2011-03-06 11:00:00 -10000.
我可以使用它,但也许有人可以解释这一点,以帮助我更好地理解NSDate.
Tom*_*mmy 20
NSDate返回当前日期.虽然它可以在不同的语言环境/时区中转换为字符串格式,但NSDate没有时区的内部概念.NSDates不受任何特定区域的约束.如果您和世界上的任何其他人同时询问您的设备[NSDate日期],您将得到相同的结果 - 不是因为它总是以GMT返回,而是因为它不以特定于时区的方式返回.在可可,约会是地球历史上的一个特定时刻.如何撰写日期与您的日历,时区和区域设置有关.
你没有得到明天的约会,你得到了正确的日期,然后注意到它给出了一个不同的日子,如果用GMT表示的话.这是正确的日期,只是写得与你想要的不同.
'description'是从NSObject重写的方法.当您对NSLog一个对象时,内部发生的是调用description方法并打印返回的字符串.所以,你应该得到记录相同的结果object和[object description],因为前者已经调用的描述,并打印字符串,后者来电说明然后调用生成的字符串描述,并打印.NSStrings作为描述的结果返回自己.
它应该是默认行为,但要获得有意义的描述,请尝试:
NSLog(@"%@", [[NSDate date] descriptionWithCalendarFormat:nil
timeZone:[NSTimeZone localTimeZone] locale:[NSLocale currentLocale]]);
Run Code Online (Sandbox Code Playgroud)
如果仍然以GMT登录,则您的设备认为自己处于GMT状态.我不知道模拟器对于那种东西有多可靠.
| 归档时间: |
|
| 查看次数: |
9081 次 |
| 最近记录: |