2013-11-04 53 views
0

我试图从EXIF最新数据解析到NSDate返回零。下面是从图像文件中取出的样品日期字符串:NSDateFormatter dateFromString解析EXIF数据

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,而不是仅仅en_US组合,设置格式时区,日期改变yyyyYYYY格式,并allowNaturalLanguageNO,然而,dateFromString总是返回nil。我的应用程序在OS X Mavericks上运行,我的系统语言是英语,如果有问题,我的区域将设置为土耳其语。我希望我的应用程序仅为英文版,与用户所在地区无关(包括日期格式)。我已经看到这个问题:Parsing EXIF date string to NSDate但即使我尝试确切的步骤,格式化程序返回零为dateFromString。日期格式化程序有什么问题?

+0

它的工作。奇怪的。它看起来像格式化程序中的一个错误。你能不能将这个帖子作为答案发布,以便我可以接受它,并对日期格式化程序(如果有)的这种奇怪行为进行任何可能的解释? –

+1

它看起来像你正在做的一切正确 - 没有解释,其他gremlins。 –

回答

2

这似乎是initWithDateFormat初始化的问题。 根据该文件,它会创建一个使用“OS X 10.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"]; 

产生预期的结果。

+0

将这个报告给苹果的bug也是一个好主意。我现在要做。 –