这个日期字符串的格式是什么?

时间:2013-04-25 15:29:27

标签: ios nsdateformatter date-format date-formatting iso8601

我试图将一堆NSStrings转换为NSDate对象。这是一个示例字符串:

2013-04-25T15:51:30.427+1.00

但是我无法弄清楚它到底是什么格式,到目前为止我(问号是我难以理解的):

yyyy-MM-ddTHH:mm:ss????zzz

我遇到的主要问题是“.427”部分,但如果我在其他地方犯了错误,请告诉我:)

有没有人有任何想法?或者可以指出我所有可能的日期格式说明符的列表?我发现了这个:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx这很有用,但似乎没有任何关于'.427'部分的说明符,我坚持了。

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:11)

正确的格式为yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ

请参阅Unicode Date Format Patterns

此外,ZZZZZ时区格式的+00:00格式已添加到iOS 6,iOS 5或更早版本不支持。

答案 1 :(得分:0)

根据W3

,它是ISO 8601规定的有效日期格式
  

格式如下。确切地说,此处显示的组件必须是   目前,正是这个标点符号。请注意,出现“T”   字面意思是在字符串中,表示时间的开始   元素,如ISO 8601中所述。

     

年份:         YYYY(例如1997年)年和月:         YYYY-MM(例如1997-07)完成日期:         YYYY-MM-DD(例如1997-07-16)完成日期加上小时和分钟:         YYYY-MM-DDThh:mmTZD(例如1997-07-16T19:20 + 01:00)完成日期加上小时,分钟和秒:         YYYY-MM-DDThh:mm:ssTZD(例如1997-07-16T19:20:30 + 01:00)完成日期加上小时,分钟,秒和小数部分   第二         YYYY-MM-DDThh:mm:ss.sTZD(例如1997-07-16T19:20:30.45 + 01:00)

     

其中:

 YYYY = four-digit year
 MM   = two-digit month (01=January, etc.)
 DD   = two-digit day of month (01 through 31)
 hh   = two digits of hour (00 through 23) (am/pm NOT allowed)
 mm   = two digits of minute (00 through 59)
 ss   = two digits of second (00 through 59)
 s    = one or more digits representing a decimal fraction of a second
 TZD  = time zone designator (Z or +hh:mm or -hh:mm)

在您的情况下,日期的精确度为毫秒,请尝试将.sss添加到格式