0

私はこれを持っていますNSString

2010-05-29T16:31:49.000Z

そして、私はこの方法でそれをNSDateに変換したい:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSDate *date = nil;
[dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss.SSSZZZ"];
date = [dateFormatter dateFromString:dateSting];

そして、私がそれを実行すると、日付はNilに等しくなります.なぜそれが起こるのですか?

これは iPad でのみ発生し、iPhone では完全に動作します.....

4

2 に答える 2

4

http://www.w3.org/TR/NOTE-datetimeからのメモ。これに気づかせてくれたborrrdenに感謝します。

時刻は UTC (協定世界時) で表され、特別な UTC 指定子 (「Z」) が付けられます。

NSString *inputString = @"2010-05-29T16:31:49.000Z";

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSz"];

NSDate *date = [dateFormatter dateFromString:inputString];
于 2013-06-09T13:26:42.847 に答える
0

これはすでに何度も尋ねられています。入力文字列に対してフォーマッタが無効です:

yyyy-MM-dd'T'HH:mm:ss.SSSX

使用しているタイムゾーンパターンがわからないため、最後にXXXまたはXXXXを使用する必要があります。

http://www.unicode.org/reports/tr35/tr35-dates.htmlを参照してください。Ztime-zone pattern では許可されていないことに注意してくださいZZZ

于 2013-06-09T12:36:32.657 に答える