嚴格的來說,這個標題可能不太正確,因為我首先度娘了一下,ISO8601時間格式標準應該類似於:2016-01-18T23:41:00-08:00,而UTC時間格式差不多類似
在做一個項目用到一個國外的API,返回的一個時間格式是:2016-01-18T23:41:00
我有幾個問題想問一下:
1.因為沒有搜尋到具體資料,返回的這個2016-01-18T23:41:00 是UTC時間和是ISO-8601時間格式?
2.如上,如果這算是ISO時間格式,因為沒有指定時區,那麼像“2016-01-18T23:41:00”這種情況,預設是+00:00嗎?(如果是UTC時間,也是類似的問題,沒有指定時區/時差預設的是什麼,如果有)
回複內容:
嚴格的來說,這個標題可能不太正確,因為我首先度娘了一下,ISO8601時間格式標準應該類似於:2016-01-18T23:41:00-08:00,而UTC時間格式差不多類似
在做一個項目用到一個國外的API,返回的一個時間格式是:2016-01-18T23:41:00
我有幾個問題想問一下:
1.因為沒有搜尋到具體資料,返回的這個2016-01-18T23:41:00 是UTC時間和是ISO-8601時間格式?
2.如上,如果這算是ISO時間格式,因為沒有指定時區,那麼像“2016-01-18T23:41:00”這種情況,預設是+00:00嗎?(如果是UTC時間,也是類似的問題,沒有指定時區/時差預設的是什麼,如果有)
UTC 是時間標準;ISO-8601 是表示時間的一種標準格式,多數程式設計語言都支援。
2016-01-18T23:41:00 是符合 ISO-8601 標準的時間表示。
2016-01-18T23:41:00 裡面的 T 表示 UTC,所以這個字串解析後就表示 UTC 時間的 2016-01-18 23:41:00,那麼再轉換為北京當地時間展示(比如,在 JavaScript 裡面 new Date('2016-01-18T23:41:00').toLocaleString())時就會加上 8 小時的位移,變成:2016-01-19 7:41:00。
更多這方面的東西,可以參考我之前寫的文章:http://segmentfault.com/a/1190000004292140
首先你對這兩個概念就有混淆, UTC 是時間,並不是時間的格式,和 ISO-8601 不能進行比較。
之後回答你問題,
IOS-8601 不只有一個格式,而是包含很多格式,其中就有沒有時區的為 0時區。當然,其他的格式中還有沒有時間只有日期的。
附一份 IOS-8601 官方規範
http://www.iso.org/iso/home/standards/iso8601.htm
維基百科:
Time zones in ISO 8601 are represented as local time (with the location unspecified), as UTC, or as an offset from UTC.
If no UTC relation information is given with a time representation, the time is assumed to be in local time.
所以如果不指定時區,則表示的是本地時間。相當於localtime得到的時間。沒指定時區不代表UTC時間,UTC時間必須最後寫明Z或者用+00之類的位移。
那個T的意義僅僅是分隔字元,沒有別的意思。