NSDateFormatter
を使用してNSDate
に変換する機能があります。NSDateFormatter IOSバグ
+(NSDate*)getDateFromCurrentTimestamp:(NSString*)currentTimestamp{
// currentTimestamp= @"28-Feb-2012 16:42:19 PM";
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDoesRelativeDateFormatting:NO];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[dateFormatter setFormatterBehavior:NSDateFormatterShortStyle];
//[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehaviorDefault];
[dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm:ss a"];
return [dateFormatter dateFromString:currentTimestamp];
}
IOS 5.xが正しいNSDate
を返します。 4.1 & 4.2で実行した場合も、正しいNSDate
が返されます。 4.3.2 & 4.3.3で実行すると、null
が返されます。
どのようにできますか?これの任意の回避策ですか?
EDIT
これは、iOSのバグによって引き起こさないです。これは電話自体に関連しています。一部の電話機にデバイスに異なるlocale
が設定されています。だから我々は1つを使用するように強制しなければならなかったlocale
。
はあなた 'region'および4.3.2&4.3.3デバイスに設定された' locale'ていますか?参照してください[このような質問](http://stackoverflow.com/questions/1559182/how-do-you-interpret-dates-with-nsdateformatter/1559284#1559284) – tipycalFlow
ええ、あなたはおそらく正しい。多分、問題は 'locale'ではなくiosのバージョンに関連しています。私はちょっと試してみる。 – HelmiB
これは次のように動作します: '[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@" en_GB "] autorelease]];'。ありがとう。あまりにも悪いあなたの答えを受け入れることができない。 – HelmiB