0

我正在尝试将数据从 EXIF 日期解析为NSDate. 这是从图像文件中获取的示例日期字符串:

2013:10:15 19:19:31

它是year:month:day 24hour:minute:second格式的。我正在使用以下代码来解析它:

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 的语言环境标识符。(我在小牛队,我认为这是小牛队的一个新问题)无论如何我已经尝试过完全不设置语言环境,将语言环境设置为en_US_POSIX而不是 just ,为en_US格式化程序设置时区,更改yyyyYYYY日期格式和但是,总是返回 nil。我的应用程序在 OS X Mavericks 上运行,我的系统语言是英语,如果重要的话,我的地区设置为土耳其。我希望我的应用程序是纯英语的,独立于用户的区域(包括日期格式)。我见过这个问题:Parsing EXIF date string to NSDate但即使我尝试了确切的步骤,格式化程序也会返回 nilallowNaturalLanguageNOdateFromString dateFromString. 日期格式化程序有什么问题?

4

1 回答 1

2

这似乎是initWithDateFormat初始化程序的问题。根据文档,它创建了一个使用“OS X v10.0 格式化行为”的格式化程序,但我不知道那是什么。并且将行为设置为NSDateFormatterBehavior10_4明确似乎也无济于事。

使用

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy:MM:dd HH:mm:ss"];
NSDate *date = [formatter dateFromString:@"2013:10:15 19:19:31"];

产生预期的结果。

于 2013-11-04T19:02:48.927 回答