2014-02-22 56 views
-2

我想要做的是有一個NSDate與當前正確的時間。當我將日期轉換爲字符串時,時間是正確的,但是當我轉換回NSDate時,時間剛剛關閉。NSDate從NSString獲取錯誤的日期

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm"]; 
[dateFormatter setLocale:[NSLocale currentLocale]]; 
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; 
NSDate* myDate = [dateFormatter dateFromString:dateString]; 
NSLog(@"datete:%@ and %@", myDate, dateString); 

2014年2月22日0時18分00秒+0000和21-02-2014 16:18

+0

如果你顯示'NSLog'的輸出,那真的會有幫助。這可能沒有錯。在UTC時區,'NSDate'如何被記錄。 – rmaddy

+0

順便說一句 - 沒有必要將日期格式化程序的語言環境設置爲當前語言環境 - 這是默認設置。 – rmaddy

+0

我用nslog更新了原始文章。 – Bomiz

回答

0

打印時NSDate對象,請記住,description返回UTC日期。因此,如果您看到兩個對象之間存在差異,請確保考慮您的時區並將其添加到NSDate的打印值。

當您想要在日誌和/或用戶界面中正確地打印它們時,應該使用日期格式化程序,而不是直接打印NSDate對象。日期格式化程序採用本地時區和系統區域設置,並正確打印日期。

+0

我將如何去添加正確的金額?這是不同的時區 – Bomiz

+0

@Bomiz我的意思是添加在你的頭,所以你可以檢查正確性。 'NSDate'對象不包含任何時區信息。當你想在你的日誌和/或UI中正確地打印它們時,應該使用日期格式化程序,而不是直接打印'NSDate'對象。 –

+0

我正在做的是將當前日期保存爲userdefault。我無法保存格式化程序。所以我認爲是將它轉換回NSDate以便保存。但是有可能將具有正確日期的NSString轉換爲包含與字符串相同日期的NSDate? – Bomiz