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 回答