2

RSS フィードを解析しようとしていますが、日付の解析が困難です。日付文字列は次のとおりです。publishedDate = "2013-01-08T20:09:02.000Z"

これが私のコードです:

NSDateFormatter *utc = [[NSDateFormatter alloc] init];
[utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[utc setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *dtUTC = [utc dateFromString: publishedDate];

NSDateFormatter *dfLocal = [[NSDateFormatter alloc] init];
[dfLocal setDateFormat:@"yyyy-MM-dd"];
[dfLocal setTimeZone:[NSTimeZone localTimeZone]];

NSString *time =[dfLocal stringFromDate:dtUTC];
NSLog(@"original UTC %@  now local: %@", dtUTC, time);

なぜdatenil を返すのですか? また、UTC 時間を CST 時間に変換しようとしています。

4

3 に答える 3

2

使用する

 [utc setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.'000Z'"];
于 2013-01-09T02:57:22.620 に答える
1

タイム ゾーン名を CST に変更し、setDateFormat を次のように変更します。

NSDateFormatter *cst = [[NSDateFormatter alloc] init];
    [cst setTimeZone:[NSTimeZone timeZoneWithName:@"CST"]];
    [cst setDateFormat:@"yyyy-mm-dd'T'HH:mm:ss.'000Z'"];
    NSDate *theCST = [cst dateFromString:publishedDate];
    NSLog(@"theCST is %@", theCST);
于 2013-01-09T03:09:08.793 に答える
1

ミリ秒を含む stime には、「S」を使用します。

[utc setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'"];

NSString *publishedDate = @"2013-01-08T20:09:02.000Z";
NSDateFormatter *utc = [[NSDateFormatter alloc] init];
[utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[utc setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'"];
NSDate *dtUTC = [utc dateFromString: publishedDate];
NSLog(@"dtUTC: %@", dtUTC);

NSLog 出力:
dtUTC: 2013-01-08 20:09:02 +0000

SDateFormatter *dfLocal = [[NSDateFormatter alloc] init];
[dfLocal setDateFormat:@"yyyy-MM-dd"];
[dfLocal setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

NSString *time =[dfLocal stringFromDate:dtUTC];
NSLog(@"original UTC %@  now local: %@", dtUTC, time);

NSLog 出力:
元の UTC 2013-02-08 20:09:02 +0000 現在ローカル: 2013-02-08

于 2013-01-09T03:03:26.137 に答える