NSDateFormatter dateFromString不会解析特定的日期字符串

时间:2009-10-16 14:54:28

标签: iphone nsdate nsdateformatter

美好的一天,

我有NSDateFormatter似乎不喜欢我想要转换的特定字符串。这个特殊的例子是

2009-10-16T09:42:24.999605

我所有其他日期的格式都相同,可以解析。

以下是转换stringNSDate的代码。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSSS"];

[order setModifiedAtDate:[dateFormatter dateFromString:[orderDataDictionary valueForKey:@"ModifiedAt"]]];
order.ModifiedAtDate致电后,

dateFromString nil

是否有其他人遇到过他们的日期无法转换为NSDates的情况?

谢谢,

2 个答案:

答案 0 :(得分:7)

我能够通过从格式化程序中删除亚秒字段来获取解析日期:

NSString *test = @"2009-10-16T09:42:24.999605";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSDate *testOut = [dateFormatter dateFromString:test];

我怀疑你可以更详细地找到为什么它使用这个函数的亚秒字段失败,因为看起来它做同样的事情,但返回错误信息:

http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDateFormatter/getObjectValue:forString:range:error

无论如何,希望这会让你再次前进。

答案 1 :(得分:1)

您应该在小数位置尝试小写“s”,如下所示:

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.ssssss"]

它对我有用。