Objective c NSDateFormatter dateFromString为解析EXIF数据返回nil

Objective c NSDateFormatter dateFromString为解析EXIF数据返回nil,objective-c,macos,cocoa,nsdate,nsdateformatter,Objective C,Macos,Cocoa,Nsdate,Nsdateformatter,我正在尝试将数据从EXIF date解析为NSDate。以下是从图像文件中提取的日期字符串示例: 2013:10:15 19:19:31 它采用年:月:日24小时:分钟:秒格式。我使用以下代码来解析此内容: NSDateFormatter *formatter = [[NSDateFormatter alloc] initWithDateFormat:@"yyyy:MM:dd HH:mm:ss" allowNaturalLanguage:YES]; formatter.formatterBeha

我正在尝试将数据从EXIF date解析为
NSDate
。以下是从图像文件中提取的日期字符串示例:

2013:10:15 19:19:31

它采用
年:月:日24小时:分钟:秒
格式。我使用以下代码来解析此内容:

NSDateFormatter *formatter = [[NSDateFormatter alloc] initWithDateFormat:@"yyyy:MM:dd HH:mm:ss" allowNaturalLanguage:YES];
formatter.formatterBehavior = NSDateFormatterBehavior10_4;
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSDate *date = [formatter dateFromString:dt];

如果我没有设置格式化程序行为,它会抱怨在10.0格式化程序上尝试10.4的区域设置标识符。(我在Mavericks上,我认为这是Mavericks上的一个新问题)无论如何,我尝试了不设置语言环境的组合,将语言环境设置为
en_US\u POSIX
,而不仅仅是
en_US
,为格式化程序设置时区,将日期格式的
yyyy
更改为
yyyyyy
,和
allownaturallalanguage
NO
,但是,
dateFromString
总是返回nil。我的应用程序运行在OSX Mavericks上,我的系统语言是英语,如果有必要,我的地区设置为土耳其。我希望我的应用程序只使用英语,不受用户所在地区(包括日期格式)的影响。我看到了这个问题:但即使我尝试了确切的步骤,格式化程序也会为
dateFromString
返回nil。日期格式化程序有什么问题?

似乎是
initWithDateFormat
初始值设定项的问题。 根据文档,它创建了一个使用“OSXV10.0格式化行为”的格式化程序,但我不知道这是什么。明确地将行为设置为
NSDateFormatterBehavior10\u 4
似乎也没有帮助

使用


产生预期的结果。

它起作用了。奇怪的它看起来像格式化程序中的一个bug。你能不能把这篇文章作为一个答案,这样我就可以接受了,对日期格式化程序(如果有的话)这种奇怪的行为有什么可能的解释吗?看起来你做的一切都是正确的——没有解释,除了小精灵。把它作为一个bug报告给苹果也是一个好主意。我现在就做。
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy:MM:dd HH:mm:ss"];
NSDate *date = [formatter dateFromString:@"2013:10:15 19:19:31"];