2013-04-25 132 views
4

我試圖將一堆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'部分,我堅持。

任何幫助表示讚賞,謝謝。

回答

11

正確格式爲yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ

請參閱Unicode Date Format Patterns

另外,+00:00時區格式的ZZZZZ格式已添加到iOS 6,並且在iOS 5或更低版本中不受支持。

0

這是因爲通過ISO 8601規定的,根據W3

的格式如下有效的日期格式。這裏顯示的組件必須是 ,完全是這個標點符號。需要注意的是,「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的格式

+2

這些不是用於'NSDateFormatter'的正確格式說明符。 – rmaddy 2013-04-25 15:43:53

+0

@rmaddy問題標題實際上是'這個日期字符串是什麼格式?'我的回答完全是這樣。 – andreagiavatto 2013-04-25 15:54:54

+0

但問題是iOS和標記與NSDateFormatter。所以答案應該適合這個設置。 – rmaddy 2013-04-25 15:56:01