2016-08-12 9 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」 '〜' 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を使用して、日付を表示する前にタイムゾーンを に設定する必要があります。

NSDateについてNSLogまたはdebbugerがあなたに伝えていることを信頼しないでください。あなたの日付を確認するために 使用

NSString dateAsString = [dateFormat stringFromDate:date]; 

:)

+0

はい、そうです。 – Kabali

+0

[NSTimeZone localTimeZone]に設定されたNSDateFormatterを使用して日付を後で出力する場合、04:10に正しく設定されます:) –

+0

私はすでにdateformateでlocalTimeZoneを使用しています。 – Kabali

関連する問題