我正在尝试将数据从 EXIF 日期解析为 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_POSIX
而不仅仅是 en_US
的组合>,为格式化程序设置时区,将日期格式的 yyyy
更改为 YYYY
,并将 allowNaturalLanguage
更改为 NO
,但是,dateFromString
总是返回nil。我的应用程序在 OS X Mavericks 上运行,我的系统语言是英语,如果重要的话,我的区域设置为土耳其。我希望我的应用程序仅支持英语,与用户所在的区域(包括日期格式)无关。我见过这个问题:Parsing EXIF date string to NSDate但即使我尝试了确切的步骤,格式化程序也会为 dateFromString
返回 nil。日期格式化程序出了什么问题?
最佳答案
这似乎是 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"];
产生预期的结果。
关于objective-c - NSDateFormatter dateFromString 返回 nil 用于解析 EXIF 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19774638/