1

NSDateFormatterを使用して日付文字列を解析する際に問題が発生しました。以下のメソッドメソッドをNSDateカテゴリとして実装しました。入力は次の日付文字列Thu、22 Dec 2011 16:03:39 +0100であり、EEEの解析に次のパターンを使用しています。ddMMM yyyy HH:mm:ss ZZZ

問題は、メソッドがnilを返すことです

+(NSDate*) dateFromString:(NSString*)dateString pattern:(NSString*)pattern
{
    NSDateFormatter *dateParser = [[NSDateFormatter alloc] init];
    [dateParser setDateFormat:pattern];

    NSDate *parsedDate = [dateParser dateFromString:dateString];

return parsedDate;
}

Stackoverflowやインターネット上の他の場所を調べましたが、この問題の解決策は見つかりませんでした。

4

1 に答える 1

2

NSDateFormatterは、12/24 時間表示、月名、曜日名などの地域設定について非常にスマートです。日付フォーマッターを初期化すると、常に現在のロケールが使用されますが、手動でロケールを設定することもできます。ロケール識別子を使用して、en_US_POSIXロケール設定を尊重せず、常に同じ動作を使用する日付フォーマッターを取得できます。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

たとえば、サーバーから返された日付文字列を解析する必要がある場合、これは便利です (実際には必須です)。

-setDateFormat:アプリで日付文字列を表示する場合は、メソッドを直接使用しないでください。メソッドを使用+dateFormatFromTemplate:options:locale:して正しい日付形式を取得します。

一部の言語では、月は日の前に書かれます...

    NSString *dateFormat = [NSDateFormatter dateFormatFromTemplate:@"dd MMMM yyyy" options:0 locale:[NSLocale currentLocale]];
    [dateFormatter setDateFormat:dateFormat];
于 2012-08-22T12:32:52.547 に答える