8

私は次のコードを使用しています & iPhone OS 3.2 で完全に正常に動作します

+(NSDate *)NSDateFromString:(NSString *)dateString
{

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateStyle:NSDateFormatterShortStyle];
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSDate *dateObj=[dateFormatter dateFromString:dateString];
    [dateFormatter release], dateFormatter=nil;
    return dateObj;
}

しかし、iPhone OS 4.0 と同じコードを使用しようとすると、dateObj は nil でした。

その理由は :

- (id)initNSDateFormatter のメソッドは、iPhone OS 2.0 から iPhone OS 3.2 でのみ使用できます。iPhone OS 4.0 では廃止されました。

今、その解決策は何ですか?NSDateFormater を初期化するには? 代替手段は何ですか?

4

3 に答える 3

2

iOS2.xおよび3.xでは、NSDate description / datefromstring関数は次を返します:2010-09-24 17:30:00-0700

iOS 4.1では、これを返します:2010-09-25 00:30:00 GMT

あなたはアップルにバグを提出することができます。オフセットに対して0000を返す必要があるという仕様にも従いません。そのため、現地の日付を返さないだけでなく、オフセットの代わりにGMTも使用します。この新しい形式はNSDateFormatterメソッドと互換性がないようです。

また、ドキュメントの誤りではないと思います。API Diffドキュメントには、NSDateFormatterのinitが削除されていることが記載されています。

于 2010-10-15T04:49:48.613 に答える
2

[NSDateFormatter dateFormatFromTemplate:options:locale:] might work better

NSString *format = [NSDateFormatter
                   dateFormatFromTemplate:@"Mdjm"
                                  options:0
                                   locale:[NSLocale currentLocale]];

// "M/d h:mm a" // US English format returned for US locale

[dateFormatter setDateFormat:format];
NSDate *date = [dateFormatter dateFromString:dateString];
于 2010-07-11T20:12:12.383 に答える
2

- (id)initiOS4 の NSDateFormatter では非推奨ではありません。それはドキュメントのエラーです。

于 2010-07-11T09:45:46.683 に答える