0

javascriptでISOStringをローカル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'

私は何をすべきか?

4

1 に答える 1

1

.toISOString()メソッドのみがありますが、ローカルタイムゾーンは使用されません。そのためには、文字列を自分でフォーマットする必要があります。

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;
}
于 2013-02-18T17:38:09.337 に答える