2012-01-04 604 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