时间戳转换澄清

时间:2013-12-16 08:49:29

标签: javascript timestamp

我创建了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'); 

3 个答案:

答案 0 :(得分:2)

查看此文档here,它是ISO 8601的摘录。

'T'仅用作时间和日期之间的分隔符。

'Z'UTC (+00:00)作为时区的特殊指标

问题是,就我所知,“2014-05-02 22:03:34”有点特定于Chrome格式,将此时间视为当地时间。所以恰好8小时的差异出现了。

为了安全起见,请务必记住将分隔符放入其中,并记住您所指的时区。

答案 1 :(得分:1)

请参阅此wiki-article,字符串中的Z表示您正在使用  当地时区,这就是警报差异的原因

答案 2 :(得分:1)

根据ECMA-262,接受的日期时间格式为:

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

其中ZZ+-后跟HH:mm。如果在时间戳结束时指定Z,则表示时间以UTC为单位。由于您居住在GMT + 8,您的浏览器会增加8小时将其转换为当地时间。因此,您获得3,May 2014 6:3:34而不是2,May 2014 22:3:34