6

再会,

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

2009-10-16T09:42:24.999605

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

这是转换string.NSDate

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

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

谢谢,

4

2 回答 2

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

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

于 2009-10-18T21:32:22.440 回答
1

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

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

它对我有用。

于 2012-12-15T01:59:11.467 回答