对于以.fffffff结尾的格式,NSDateFormatter返回nil

时间:2013-10-24 15:26:56

标签: ios nsdate nsdateformatter nslocale

我们目前正在创建一个使用现有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'

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

2 个答案:

答案 0 :(得分:0)

要扩展rmaddy的答案,您可以在NSDateFormatter的格式字符串中输入的值取决于您要定位的iOS(或OS X)的版本。

来自Data Formatting Guide

  

固定格式

     

要为日期格式化程序指定自定义固定格式,请使用   setDateFormat :.格式字符串使用来自的格式模式   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。

  •   

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

在你的情况下,你正在寻找“分数秒”,rmady在iOS 5.x和iOS 6.x上正确指出S

答案 1 :(得分:0)

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

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