【问题标题】:NSDateFormatter dateFromString will not parse a particular date stringNSDateFormatter dateFromString 不会解析特定的日期字符串
【发布时间】:2010-12-07 09:45:51
【问题描述】:

早安,

我有一个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"]]];
dateFromString 调用之后,

order.ModifiedAtDatenil

还有其他人遇到过无法将日期转换为NSDates 的情况吗?

谢谢,

【问题讨论】:

    标签: iphone nsdate nsdateformatter


    【解决方案1】:

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

    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:

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

    【讨论】:

      【解决方案2】:

      你应该在小数位尝试小写“s”,像这样:

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

      它对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-01
        • 1970-01-01
        • 2013-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多