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