2016-11-14 25 views
0

我正在使用NSDateFormatter的dateFromString,但是當它被給予字符串時,它吐出不同的小時。iOS'dateFromString'返回不同?

代碼

NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
dateformatter.dateFormat = @"yyyy-MM-dd"; 
NSDate *firstDate = [dateformatter dateFromString:@"2017-06-02"]; 
NSDate *secondDate = [dateformatter dateFromString:@"2016-11-02"]; 

輸出

firstDate: 2017-06-01 22:00:00 +0000 
secondDate: 2016-11-01 23:00:00 +0000 

我不知道爲什麼他們不具有相同的時間?

+2

每當您在調試器上打印日期時,打印的日期將以UTC格式打印,因此打印在調試器上的日期是如果要進一步測試它,則將通過日期轉換爲UTC,然後將其轉換日期轉換爲String並將其打印到調試器中。 – Rajat

回答

1

沒有指定兩個日期的時間,所以他們被初始化到當地時間的午夜。當您打印它們時,它們以UTC顯示。您的當地時區(中歐時間)從2016年3月27日至2016年10月30日觀察到夏令時。因此,受夏時制約束的6月午夜時間比UTC(22:00:00)提前2小時,而11月的午夜時間不屬於夏令時,僅比UTC(23:00:00)提前1小時。