はじめに
JavaScript
やTypeScript
で現在の時間を取得するにはDate
を用いると思います。
function getDate(){ var date = new Date(); Logger.log(date.toString()); Logger.log(date.toLocaleString("ja")); }
これの出力を見てみると、
おかしい、なにかがおかしい…。
Gooogle Apps Scriptはグーグルのサーバーで実行されるので、toString()
で日本時間が返ってこないことはなんとく分かっていました。
ただ日本を対象として取得しても、toString
と同じ時間が返ってきているのです。
解決策
途方に暮れていたところ、このようなサイトを見つけました。
こちらによると協定世界時からの差分を取得し、先程の例で取得した時間からその分だけずらしてしまおうということでした。
いやはや、なるほどですね。
それを加味したコードはこちら。
function getDate2(){ var date = new Date(Date.now() + ((new Date().getTimezoneOffset() + (9 * 60)) * 60 * 1000)); Logger.log(date.toString()); }
(EST)という邪魔なやつはいまだに残っていますが、時間は正しく表示することができました。