【问题标题】:NSDateFormatter returning nil for formats ending in .fffffffNSDateFormatter 对于以 .fffffff 结尾的格式返回 nil
【发布时间】:2013-10-24 15:26:55
【问题描述】:

我们目前正在创建一个使用现有 XML 的接口,但在解析日期响应时遇到了问题。 XML 将在 IOS 应用程序中使用。

XML 的 DateTime 格式为:MM/dd/yyyy HH:mm:ss.fffffff

因此,我们需要将该响应转换为适当的 NSDate。但是,我们无法使该格式正常工作。

一个简单的测试:

NSDateFormatter * df = [[NSDateFormatter alloc] init];  
[df setDateFormat:@"MM/dd/yyyy HH:mm:ss.fffffff"];  
NSDate * dob1 = [[NSDate alloc]init];  
dob1 = [df dateFromString:@"03/26/1983 01:10:10.0000000"];

... dob1 将返回 nil

NSDateFormatter * df = [[NSDateFormatter alloc] init];  
[df setDateFormat:@"MM/dd/yyyy HH:mm:ss.0000000"];  
NSDate * dob1 = [[NSDate alloc]init];  
dob1 = [df dateFromString:@"03/26/1983 01:10:10.0000000"];

...这确实有效,但只允许'.0000000'

任何建议将不胜感激。谢谢。

【问题讨论】:

标签: ios nsdate nsdateformatter nslocale


【解决方案1】:

你应该使用这个格式化程序

@"MM/dd/yyyy HH:mm:ss.SSSSSSS"

【讨论】:

  • 太棒了。我想我以前尝试过'.sssssss',但从未大写。谢谢,效果很好。
【解决方案2】:

为了扩展 rmaddy 的回答,您可以在 NSDateFormatter 的格式字符串中输入的值取决于您所针对的 iOS(或 OS X)版本。

来自Data Formatting Guide

固定格式

要为日期格式化程序指定自定义固定格式,请使用 设置日期格式:。格式字符串使用来自 Unicode 技术标准#35。标准版本不同 随着操作系统的发布:

  • OS X v10.8 和 iOS 6.0 中的格式化程序使用版本 tr35-25。

  • iOS 5.0-5.1 中的格式化程序使用版本 tr35-19。

  • OS X v10.7 和 iOS 4.3 中的格式化程序使用版本 tr35-17。

  • iOS 4.0-4.2 中的格式化程序使用版本 tr35-15。

  • iOS 3.2 中的格式化程序使用版本 tr35-12。

  • OS X v10.6 和 iOS 3.0-3.1 中的格式化程序使用版本 tr35-10。

您应该始终仔细检查您要使用的格式化程序是否可以在您支持的所有平台上使用。

在您的情况下,您在 iOS 5.x 和 iOS 6.x 上都在寻找“小数秒”,rmaddy 正确指出是 S

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多