小编典典

javascript toISOString() 忽略时区偏移

all

我现在正在尝试将 Twitter 日期时间转换为本地 iso 字符串(对于 prettyDate)2 天。我只是没有得到正确的当地时间..

我使用以下功能:

function getLocalISOTime(twDate) {
    var d = new Date(twDate);
    var utcd = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(),
        d.getMinutes(), d.getSeconds(), d.getMilliseconds());

    // obtain local UTC offset and convert to msec
    localOffset = d.getTimezoneOffset() * 60000;
    var newdate = new Date(utcd + localOffset);
    return newdate.toISOString().replace(".000", "");
}

在 newdate 中一切正常,但 toISOString() 再次将其扔回原来的时间......谁能帮我从 Twitterdate 中获取 iso
中的当地时间,格式为:Thu, 31 May 2012 08:33:41 +0000


阅读 62

收藏
2022-07-01

共1个答案

小编典典

moment.js很棒,但有时您不想为简单的事情提取大量依赖项。

以下也有效:

    var tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
    var localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0, -1);

    console.log(localISOTime)  // => '2015-01-26T06:40:36.181'

slice(0, -1)摆脱了代表祖鲁时区的尾随,Z可以用您自己的时区替换。

2022-07-01