2013-02-18 52 views
-1

如何将ISOString转换为JavaScript中的本地ISOString?如何将ISOString转换为JavaScript中的本地ISOString?

ISO 8086风格的字符串(如“2013-02-18T16:39:17 + 00:00)

而且我想将其转换成当地ISO_8601风格的字符串...

'2013-02-18T16:39:17+00:00' -> '2013-02-19T01:39:17+09:00' 

我该怎么办?

+0

s/milli/mikro秒发生了什么? – Bergi 2013-02-18 17:15:56

+0

只是我试过“新日期(”2013-02-18T16:39:17 + 00:00“)。toLocaleString()” – chobo 2013-02-18 17:18:59

+0

但这不是ISO 8086风格... – chobo 2013-02-18 17:19:29

回答

1

只有一个.toISOString() method,但不会使用本地时区。为此,您需要自己格式化字符串:

function toLocaleISOString(date) { 
    function pad(n) { return ("0"+n).substr(-2); } 

    var day = [date.getFullYear(), pad(date.getMonth()+1), pad(date.getDate())].join("-"), 
     time = [date.getHours(), date.getMinutes(), date.getSeconds()].map(pad).join(":"); 
    if (date.getMilliseconds()) 
     time += "."+date.getMilliseconds(); 
    var o = date.getTimezoneOffset(), 
     h = Math.floor(Math.abs(o)/60), 
     m = Math.abs(o) % 60, 
     o = o==0 ? "Z" : (o<0 ? "+" : "-") + pad(h) + ":" + pad(m); 
    return day+"T"+time+o; 
} 
+0

这是JS中最好的'pad'实现我到目前为止已经看到了:) – migg 2013-02-18 17:40:39

+0

@migg:这是一个相当[标准实现](http://stackoverflow.com/q/5366849/1048572)。 – Bergi 2013-02-18 17:44:50

相关问题