
素人プログラマーが、RailsとVue、そしてJavaScriptにズブズブ沼った
タイムゾーンの扱いが難しい!
今週は、Rails、Vue、そしてJavaScriptにどっぷり浸かっていました。特にタイムゾーンに関する学びが深かったです。プログラミングをしていると、日時やタイムゾーンの扱いって、意外と厄介な問題になりますよね。特に日本のJSTは、世界標準時間(UTC)から9時間進んでいるので、これにハマり半日は謎解きの時間となりました
UTCとはイギリスの基準になっている時間です。時差と言うやつです。
日本は極東と言うやつです。
実際に書いてみた!
例えば、JavaScriptで日時を扱う際、JSTで設定したタイムゾーンも、JSON形式に変換されるときにUTCに強制変換されるんです。これで9時間のズレが生じるんですよね。このことに気づいてから、少し試してみたところ、次のようなコードを書いてみました。
const now = new Date('2021-12-25');
console.log(now);
// Sat Dec 25 2021 09:00:00 GMT+0900 (日本標準時)
const past = new Date(now);
console.log(past);
console.log(now.toLocaleString());
// 2021/12/25 9:00:00
"2021‐12‐25 0:00" ではなく、"2021/12/25 9:00:00" だと、、、9時間ズレているやんけ。
ここで感じたのは、やっぱりタイムゾーンって難しいということ。JSTのままJSON形式にしようとすると、UTCに戻されてしまうことがよくあります。そこで、UTCからJSTに戻すための関数を作ってみました。
const convertUTCToJST = (dateString) => { const date = new Date(dateString);
const JST_OFFSET_MINUTES = 9 * 60;
const jstDate = new Date(date.getTime() + JST_OFFSET_MINUTES * 60000); return jstDate; };
UTCとJSTは9時間差なので、その分足しましょう、と言うことをしているだけです。
これで、UTCからJSTに簡単に変換できるようになりました。こんな単純なことですが、小さなことですが、日々の開発の中でこうした知識を積み重ねることで、少しずつ自信がついてきます。
今後も学びを続けます!
今後は、RailsやVueでの開発にさらに磨きをかけつつ、JavaScriptでのコーディングスキルも一層高めていきたいと思っています。毎日新しい発見があり、ますますこの分野が面白くなってきています。
次の週も新しい挑戦が楽しみです!