Objective-Cで不明な日付形式をフォーマットする方法

objective-c
Objective-Cで不明な日付形式をフォーマットする方法

おそらく簡単なものを見落としていましたが、Objective-Cで特定の日付形式を変換する方法がわかりません。 次の形式で日付を受け取ります:

  • 2010年10月10日(日)01:44:00 + 0000 *

そして、私はそれを次のように時間のない長い形式に変換する必要があります:

  • 2010年10月10日*

NSDateFormatterを使用してみましたが、文字列から日付を取得しようとすると、常にnilに戻ります。 私はこうやってみました:

NSString *dateFromData = [articleData objectAtIndex:5];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateStyle:NSDateFormatterLongStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSDate *date = [dateFormatter dateFromString:dateFromData];

NSString *formattedDateString = [dateFormatter stringFromDate:date];

日付文字列は常にnilに戻ります。 ここに簡単なものが足りないのですか。

  1  0


ベストアンサー

これは私が動作するようになったコードであり、他のフォーマット文字列を機能させることができませんでした

NSString *dateFromData = @"Sun, 10 Oct 2010 01:44:00 +0000";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm:ss zzzz"];

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];

NSDate * date = [dateFormatter dateFromString:dateFromData];

[dateFormatter setDateStyle:NSDateFormatterLongStyle];

NSString *formattedDateString = [dateFormatter stringFromDate:date];

1


問題は、2つの日付フォーマッターを使用する必要があることです。 1つは元の形式を解析し、もう1つは目的の出力を生成します。 入力スタイルと一致しないため、LongStyle日付形式も使用できません。

NSDateFormatter *df = [[NSDateFormatter alloc] initWithDateFormat:@"%a, %d %b %Y %H:%M:%S %z"
                                             allowNaturalLanguage:false];
NSDate *d = [df dateFromString:@"Sun, 10 Oct 2010 01:44:00 +0000"];
NSDateFormatter *df2 = [[NSDateFormatter alloc] initWithDateFormat:@"%B %d, %Y"
                                              allowNaturalLanguage:false];
[df2 stringFromDate:d]

(注、このコードをMacRubyで記述し、Objective-Cに移植したため、構文エラーが発生する可能性があります。)

irb(main):001:0> df = NSDateFormatter.alloc.initWithDateFormat("%a, %d %b %Y %H:%M:%S %z", allowNaturalLanguage:false)
=> #
irb(main):002:0> d = df.dateFromString("Sun, 10 Oct 2010 01:44:00 +0000")
=> #
irb(main):004:0> df2 = NSDateFormatter.alloc.initWithDateFormat("%B %d, %Y", allowNaturalLanguage:false)
=> #
irb(main):005:0> df2.stringFromDate(d)
=> "October 09, 2010"

0


タイトルとURLをコピーしました