サマータイムか…そういえばそんなものがあったな

2021年3月24日水曜日

JavaScript 日記

JavaScriptについて学習していたときに日付表示に関するDateオブジェクトのことを知り、気が向いたらブログにページを作成しようと思っていたものがありました。それがMLB各球団本拠地の現時刻表示試合中継やスコア速報を観たりするとき向こうは現在何時なのかな?と気になることがたまにあったのです。

OGP画像


考え事をするひと


調べればすぐに出てくるわけですが、いちいち検索するのも面倒だなぁと(時差を記憶する気はない…)。ということでページを作成。正直もっと簡単にできると考えていたのに思いのほか苦戦しました。Dateオブジェクトで時刻表示するだけだから簡単簡単!とか甘い考えでした。作成しようと思い立ってまずは各本拠地の時差を確認。するとタイムゾーン(協定世界時との時差)が[-5,-6,-7,-8]の四つ存在(日本との時差なら[-14,-15,-16,-17])。初日はタイムゾーンを調べただけで就寝。そして翌日、作業に取り掛かる前にもう一度確認してみると…タイムゾーンが変わっていた!

驚く猫


一瞬頭が混乱しました。前日確認したのは夜中だったので見間違えたか?と。そして困惑しながら調べてみるとサマータイムとかいうのがあったみたいです。夏場は太陽が出るのが早いので時間を一時間進めましょう!というもの。いわれてみれば聞き覚えがある。確か日本でも導入が話題になったりしたことが何度かあった。今回タイムゾーンを確認したのが3/14(日)の午前2時前。アメリカでは三月の第2日曜日午前2時からサマータイム開始なので、切り替わる直前での確認をしていたみたいです。ある意味グッドタイミングだった。そのタイミングじゃないとサマータイムに気づかないままコードを組んで満足していただろうし。ただ…運の無駄遣い感が半端ないけど。


大当たりイラスト


面倒臭いことになったなぁ…と思いながらどうやってコードを組もうか考えてみる。自分で直接タイムゾーンを切り替えるというのが処理的には一番少なくコードを組むのは楽。面倒だし手動切り替えだからプログラムとは言い難いけれど。他にはアクセス時にタイムゾーン判定して表示するか、ちゃんとリアルタイムで表示切替できるようにするか。やっぱりプログラミングなので後者の方向で考えてみることに。まずは特定月のN番目D曜日の日付を求める必要がある。ということでカレンダーと睨めっこ。そうして導き出された式がこちら↓


1+{7+(D-D1)} mod 7+7*(N-1)

(Dは指定曜日。D1は特定年月1日の曜日)


曜日は0から6で表された数字です。特定の年月日を指定した場合の曜日はDateオブジェクトで求められるのでD1も既知。しかしこの式を求めるだけで結構な時間がかかった。算数レベルの問題だというのに…。頭が働かない働かない。検索すれば出てくる式かもしれませんが、頭の体操も兼ねてクイズ感覚で時間を費やしていました。プログラムに関しても探せばコードが出てくると思うのですが勉強も兼ねて自分で組んでみたかったので。数日の間は「こっちは何時であっちは何時」といった感じで頭の中がゴチャゴチャしながら過ごすことに。せっかくなので多少は汎用性を持たせた書き方もしてみよう…とコードを書いていると不具合がどんどんと。




なんだか記事が長くなりすぎたので、一旦ここで切ります。続きは明日投稿するか…あるいは気が変わって永遠に投稿しないかも。まぁ不具合とかの愚痴を書くくらいですし。

最新の投稿

このブログを検索

ブログ アーカイブ

自己紹介

ひきこもっていたらお爺さんになりました…嘘です。プロフ写真はFaceAppで老化したものです。本人はもう少しだけ若いです。
ブログ管理者は15年程ひきこもっている、長期ひきこもりのオッサンです。現在ブログは休止中。再開は未定です。 詳細なプロフィール

QooQ