1

私のコードはこんな感じです

NSString *tempDate = [NSString stringWithString:tempReviewData.pubDate];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateFormat:@"HH:mm a"];

NSDate *newDate = [dateFormatter dateFromString:tempReviewData.pubDate];

私のnewDateはこの時点でゼロになっています理由がわかりません

4

3 に答える 3

1

私にはうまくいくようですが、の形式によって異なりますtempReviewData.pubDate

のような無効な形式を使用すると@"6:30 M"、null も取得されます。

これは機能しています:

NSString *tempDate = [NSString stringWithString:@"6:30 PM"];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateFormat:@"HH:mm a"];

NSDate * newDate = [dateFormatter dateFromString:tempDate];
NSString * str = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"date: %@", newDate);
NSLog(@"str: %@", str);

出力:

2010-03-08 22:36:57.904 x[4340:903] date: 1970-01-01 12:30:00 +1000
2010-03-08 22:36:57.905 x[4340:903] str: 22:36 PM
于 2010-03-08T11:40:18.590 に答える
1
NSDate *newDate = [dateFormatter dateFromString:tempReviewData.pubDate];

pubDateNSString または NSDate を返しますか?

文字列を返す場合は、それを明確に示すためにそのプロパティの名前を変更する必要があります。

日付 (NSDate) を返す場合、文字列ではないため、文字列として解析しようとしても機能しません。さらに、目的の日付オブジェクトが既にあるため、このフォーマッタ コードをすべて切り取ることができます。

于 2010-03-08T17:34:11.593 に答える
0

NSDateFormatter は非常にうるさいようです。

-(void)dateFormatterTests {
    NSDateFormatter *formatter;

    formatter = [[NSDateFormatter alloc] init];

#ifdef WORKS
    [formatter setDateFormat:@"yyyy-MM-dd"];
#elif defined(ALSO_WORKS)
    [formatter setDateFormat:@"yyyy MM dd"];
    [formatter setLenient:YES];
#else // DOESN'T WORK
    [formatter setDateFormat:@"yyyy MM dd"];
#endif

    // Works per comments above
    NSLog(@"dFS: %@", [formatter dateFromString:@"2010-01-13"]);  
    // Never works with any of the above formats
    NSLog(@"dFS: %@", [formatter dateFromString:@"2010-01-13 22:00"]); 

    [formatter release]; formatter = nil;
}
于 2010-07-10T20:44:49.373 に答える