Open1

ブラウザのタイムゾーンオフセットを取得する方法

matomato

背景

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/Date
Dateオブジェクトには、getTimezoneOffset()メソッドがあるが、UTCまでのタイムゾーン差を 分単位 で返してくれるだけであり、よく見る +0900 などのタイムゾーンオフセットを取得するメソッドがないので自前で用意する必要があったので。

コードサンプル

function getTimezoneOffset(date) {
    // 各値を取得し、先頭に0を追加するヘルパー関数を定義
    const padZero = (value) => (value < 10 ? "0" + value : value);

    // ブラウザのタイムゾーンオフセットを取得
    const timezoneOffset = -date.getTimezoneOffset();
    const offsetSign = timezoneOffset >= 0 ? "+" : "-";
    const offsetHours = padZero(Math.floor(Math.abs(timezoneOffset) / 60));
    const offsetMinutes = padZero(Math.abs(timezoneOffset) % 60);
    const formattedOffset = `${offsetSign}${offsetHours}${offsetMinutes}`;

    return formattedOffset
}

実行結果

getTimezoneOffset(new Date())
// '+0900'