NSDateFormatter有时会返回nil

时间:2015-01-28 01:30:15

标签: ios nsdateformatter

我创建了一个NSDateFormatter,但有时它会在给定字符串中创建一个NSDate,有时它不会在同一个设备上(模拟器)。

这是我的代码:

NSString *lastModifiedString = [metaData objectForKey:@"Last-Modified"];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm:ss Z"];
    NSDate *onlineModDate = [dateFormatter dateFromString:lastModifiedString];

例如字符串 "周五,2015年1月9日15:08:01 GMT"它返回零但是对于"星期五,2014年12月12日09:15:52 GMT"它返回正确的NSDate。

我尝试在dateformat中添加括号,并尝试将语言环境设置为" en_US_POSIX"我尝试了一点z而不是一个大的但是它都没有用。

我做错了什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

NSDateFormatter遵循Unicode standard for date and time patterns.使用' H' 24小时制的小时:

因此,在您的代码中,正确的方法应该是:

NSString *lastModifiedString = [metaData objectForKey:@"Last-Modified"];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
    NSDate *onlineModDate = [dateFormatter dateFromString:lastModifiedString];