0

ここで何が欠けているのかわかりません。次のコードは、有効な NSDate を返しますが、時刻が正しくありません。

実際、返されるdateStringの時間が常に間違っているかどうかは問題ではないため、タイムゾーンの問題ではなく、フォーマッタの問題だと思います。

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];

[inputFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss+HH:mm"];
[inputFormatter setTimeZone:[NSTimeZone defaultTimeZone]];

NSString *dateString = @"2013-07-26T19:45:00+01:00";

NSDate *theDate = [inputFormatter dateFromString:dateString];

// returns an NSDate of 2013-07-26 01:00 BST or 2013-07-26 00:00 in NSLog

誰かが私が間違っている場所を見つけますか? ありがとう、M.

4

1 に答える 1

1

日付形式に小さな間違いがあります。日付オフセット (タイムゾーン) を処理していません。NSDateFormatterタイムゾーンではなく、最新の検出時刻を選択しません。

コードyyyy-MM-dd'T'HH:mm:ss+HH:mmでは、時間を 2 回解析しています。使用する必要がありますyyyy-MM-dd'T'HH:mm:ssZZZZZZZZタイムゾーンを指定します。このコードは iOS6 以降でのみ機能することに注意してください。iOS 5 のサポートが必要な場合は:、タイムゾーンから を削除する必要があります。

于 2013-08-26T08:16:22.123 に答える