1. ホーム
  2. javascript

[解決済み] javascriptのtoISOString()はタイムゾーンオフセットを無視する [duplicate] 。

2022-04-28 03:16:18

質問

私は今2日間、Twitterのdatetimeをローカルのiso-stringに変換しようとしています(prettyDate用)。私はちょうどローカルの時間を正しく取得していない...

は、以下の関数を使用しています。

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

解決方法は?

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 これはズールー族のタイムゾーンを表すもので、自分のタイムゾーンに置き換えることができます。