2013-12-16 155 views
0

我創建了一個jsfiddle here時間戳轉換澄清

e.onclick=timeConverter('2014-05-02 22:03:34'); //IF I PASS THIS STRING AS DATE, I GOT THIS: 2,May 2014 22:3:34 
e.onclick=timeConverter('2014-05-02T22:03:34.890Z'); //IF I PASS THIS STRING AS DATE, I GOT THIS: 3,May 2014 6:3:34 

是否 「T」 或字符串事項 「Z」?如果有人能夠啓發我,謝謝。

HTML:

<input type="button" id="format" value="Format Date"> 

的Javascript:

function timeConverter(UNIX_timestamp){ 

    var s = new Date(UNIX_timestamp).getTime()/1000; 

    var a = new Date(s*1000); 
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; 
    var year = a.getFullYear(); 
    var month = months[a.getMonth()]; 
    var date = a.getDate(); 
    var hour = a.getHours(); 
    var min = a.getMinutes(); 
    var sec = a.getSeconds(); 
    var time = date+','+month+' '+year+' '+hour+':'+min+':'+sec ; 

    //var time = date+','+month+' '+year+' '+hour+':'+min+':'+sec ; 
    alert(time); 

} 

var e = document.getElementById('format'); 
e.onclick=timeConverter('2014-05-02 22:03:34'); 
//e.onclick=timeConverter('2014-05-02T22:03:34.890Z'); 
+0

這裏有什麼事? –

+0

他可能想知道爲什麼日期不一樣 –

回答

2

查看本文件here這是ISO 8601的摘錄。

'T'只是作爲時間和日期之間的分隔符。

'Z'UTC (+00:00)的時區

的問題是,一個特殊的指標「2014-05-02 22:03:34」是有點鉻特定的格式,據我所知,它把這個時間當地時間。所以恰好8小時的差異出現了。

因此,爲了安全起見,請始終記住將分隔符放入並記住所指的時區。

+0

謝謝你的明確迴應。如果我仍然需要字符串中的「T」和「Z」,我正在轉換它並且感到困惑。 – JunM

1

看到這個wiki-article,在字符串中的Z表示您正在使用的 本地時區,因此多數民衆贊成在differnce的原因,你的警報

+0

刪除z並沒有什麼不同,然後有兩個不同的日期。 – Igle

+0

是的,這是正確的,因爲「T」閱讀文章;)它因爲你的時區 –

1

根據ECMA-262,接受日期時間格式是:

[+YY]YYYY[-MM[-DD]][THH:mm[:ss[.sss]]]Z 

哪裏Z要麼是Z+-隨後HH:mm。如果您在時間戳結尾處指定Z,則表示時間以UTC爲單位。由於您生活在GMT + 8,您的瀏覽器會增加8個小時將其轉換爲當地時間。因此,您獲得3,May 2014 6:3:34而不是2,May 2014 22:3:34