3
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"hh:mm a"];

NSDate* sourceDate = [timeFormat dateFromString:@"19/11/2010 12:00 am"];
if(sourceDate==nil)
{
    NSLog(@"source date nil");
}

iPhoneで24時間設定を使用しています。24 時間設定に変更した後、datefromstring は常に nil を返します。12 時間形式に変更すると、再び機能します。なんで ?

4

1 に答える 1

5

24 時間制の設定変更の影響を受けないように、ロケールを設定する必要があります。
形式も入力文字列と一致する必要があります(例では日付が含まれています):

NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
NSLocale *locale = [[[NSLocale alloc] 
                    initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];  
[timeFormat setLocale:locale];
[timeFormat setDateFormat:@"dd/MM/yyyy hh:mm a"];

NSDate* sourceDate = [timeFormat dateFromString:@"19/11/2010 12:00 am"];
if(sourceDate==nil)
{
    NSLog(@"source date nil");
}

詳細については、 QA1480を参照してください。

于 2010-11-19T13:35:59.810 に答える