2012-01-04 316 views

回答

6

它返回当前日期和时间。 NSDate与时区无关。 NSDate的-description可能在格林威治标准时间,但不保证。

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

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

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

在我的模拟器上,它正在返回GMT时间.. 12:36:33而我的模拟器的实际时间显示为6:09 pm ..:O – 2012-01-04 12:42:42

+0

@AnkitSrivastava:你如何打印时间? – kennytm 2012-01-04 12:44:49

+0

NSLog(@“nsdate%@”,[NSDate date]); – 2012-01-04 12:45:39

1

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

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

+0

如果我使用.. NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@“yyyy-MM-dd hh:mm:ss”]; NSString * theDate = [dateFormatter stringFromDate:[NSDate date]]; NSLog(@“the date%@”,theDate);这给我适当的价值(我目前的系统时间),即使我没有指定时区。 – 2012-01-04 12:54:29

+2

当你这样做时,NSDateFormatter隐式地拿起当前的时区和区域设置。如果你想要不同的东西,你可以明确地设置这些东西。 – 2012-01-04 13:25:05

+0

好的......那我怎样才能得到一个包含我系统日期的nsdate对象......? – 2012-01-04 13:32:23