NSDateFormatter returns 有时为零

NSDateFormatter returns nil sometimes

我创建了一个 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];

对于字符串的例子 "Fri, 09 Jan 2015 15:08:01 GMT" 它 returns 没有但是对于 "Fri, 12 Dec 2014 09:15:52 GMT" 它 returns 正确的 NSDate。

我尝试在日期格式中添加括号,我尝试将语言环境设置为 "en_US_POSIX",我尝试了一个小 z 而不是一个大 z,但都没有用。

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

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];