2016-08-12 96 views
1

我將12小時日期轉換爲24,但未能獲得完美時間。 這裏是代碼:將12小時轉換爲24

NSString *dateStr = @"2016-08-12T04:10:14.915Z"; 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSS'Z'"]; 
    [dateFormat setTimeZone:[NSTimeZone localTimeZone]]; 
    NSDate *date = [dateFormat dateFromString:dateStr]; 

和我的最後日期是

2016-08-11 22:40:14 +0000 

如何?

+0

HH = 24小時HH = 12小時,這樣嘗試改變'YYYY-MM-dd'T'HH:MM:ss.SSS'Z」原'to'yyyy-MM-dd'T'hh:mm:ss.SSS'Z'' – Tj3n

+0

請查看更新後的qun。 – Kabali

+0

你面對的是什麼 –

回答

0

你得到的NSDate對象是GMT。在法國GMT -2,如果我運行你的代碼,我有一個02:10的時間。

我是否正確,假設您的GMT偏移是-5:30?

NSDate對象沒有時區;它們代表絕對時刻。但是,當你詢問其描述時(通過 打印在NSLog中),它必須選擇一個時區。最合理的「默認」選擇是GMT。如果你自己不在GMT,則日期看起來不正確,以你自己的偏移量爲準。

在顯示日期之前,您應始終使用NSDateFormatter,將其時區設置爲 。

不要相信NSLog或debbuger告訴你關於NSDate的內容。 使用

NSString dateAsString = [dateFormat stringFromDate:date]; 

檢查您的日期:)

+0

是的,你是對的。 – Kabali

+0

如果您使用設置爲[NSTimeZone localTimeZone]的NSDateFormatter]稍後打印日期,您將在04:10正確設置它:) –

+0

我已經在dateformate中使用localTimeZone,請參閱問題。 – Kabali

相關問題