关于[NSDate日期]的困惑

时间:2012-01-04 12:39:19

标签: iphone nsdate

[NSDate date]在模拟器上返回GMT ...它在设备上什么时间返回...?还有我如何以编程方式获得模拟器时间?

2 个答案:

答案 0 :(得分:6)

返回当前日期和时间。 NSDate与时区无关。 NSDate的-description可能是GMT,但它不是保证。

  

不保证表示在操作系统的不同版本中保持不变。要格式化日期,您应该使用日期格式化程序对象。

如果要显示或解析不同时区的日期,请使用NSDateFormatter(并修改其时区/区域设置属性)或使用-descriptionWithLocale:

NSLocale* currentLocale = [NSLocale currentLocale]
NSLog(@"current locale = %@", [currentLocale localeIdentifier]);
NSLog(@"date = %@", [[NSDate date] descriptionWithLocale:currentLocale];

答案 1 :(得分:1)

NSDate与时区无关。当您获得description的描述时,它会显示一个时区,但这完全是“信息性的”,据我所知,无法设置或访问该时区信息(description除外)。存储在NSDate对象中的值是(应该是)GMT / UTC(当然,它无法判断您是否在错误的时间内输入它)。

要使模拟器了解当前时间和日期,请使用[NSDate date]。使用NSDateFormatter格式化它(如果需要)。