0

私の Web サービスは、JSON 応答で次の日付文字列を返します。この日付文字列はすでに UTC です。

{"last_updated_at": "2012-11-19 07:55:30"}

以下のように NSDateFormatter を使用して応答日付文字列を解析します。

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

if ([ticketFields objectForKey:@"last_updated_at"] != [NSNull null]) {
    self.lastUpdatedAt = [dateFormatter dateFromString:[ticketFields objectForKey:@"last_updated_at"]];

    NSLog(@"Time Response string %@", [ticketFields objectForKey:@"last_updated_at"]);
    NSLog(@"Formatted NSDate %@", self.lastUpdatedAt);
}

ここに私のログ出力があります

Time Response string 2012-11-21 11:38:44
Formatted NSDate 2012-11-21 06:08:44 +0000

ご覧のとおり、NSDateFormatter は日付文字列の解析とは別に、日付文字列が UTC+530 (私のローカル タイムゾーン) であると見なし、指定された日付から 530 時間を引いて自動的に UTC に変換します。私はこれが起こることを望んでいません。NSDateFormatter は、指定された文字列から日付をそのまま変換し、理想的には次の出力を提供する必要があります。

Time Response string 2012-11-21 11:38:44
Formatted NSDate 2012-11-21 11:38:44 +0000
4

1 に答える 1

3

この dataformater 構成により、変換が妨げられ、日付応答文字列が UTC 日付であると見なされました。

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

そしてそれはうまくいきました。

于 2012-11-22T07:04:53.603 に答える