shallow focus of clear hourglass

如何精準計算買票日期

人生中總是會有搶購熱門票券的時候,大學生也會有搶課的時候。這種搶票類型的事件總是幾家歡樂幾家愁,而且通常愁的佔大多數。

比較好的方式是設定一個行事曆,在搶票當天提醒一下,如此一來便不怕忘記。有些票是 30 天前開放,這種時候就會有個小困擾是我小學數學不好,很難快速算出 30 天前是幾月幾號。光是要精準的計算行事曆到底要設定在哪一天,就已經很傷腦筋了。在計算的時候,我還要先知道這個月是 30 天還是 31 天,再加一或減一,如果遇到 2 月還有例外,真是惡夢般的小學數學。

為了讓未來的我更方便的計算時間,我這裡整理了一些的 code snippets 。大家可以打開 devtools 自己快速的計算。以下包括日期的加減運算。

加減幾天

如果你要加減, JavaScript 的時間單位是 Epoch time (ms) 。可以使用特定時間減去 30 天 (換算成 ms) ,即可得到從今天之前 30 天究竟是哪天。

new Date(Date.now() + 1000 * 60 * 60 * 24 * -30)

從 2023 冬至 (2023-12-22) 往前 30 天。

new Date(+(new Date('2023-12-22T02:27Z')) + 1000 * 60 * 60 * 24 * -30)

我當時是為了買 Newgrange 的票才寫這篇文章的。聽說在冬至的時候,陽光會透過小洞直接照射進入小墓室裡面,剛好可以點亮微小的空間。

日期相減

除了相加以外,減法對於小學數學不好的我來說也是個難題。有時候我需要計算買票日期,並相減,來驗算到底我到底有沒有算錯。舉例來說 2024-03-01 剪掉 2024-02-28 (閏年) 應該要是 2 天。

(new Date('2024-03-01') - new Date('2024-02-28')) / (1000*60*60*24)

雖然以上的方法算得還蠻快的,但好像不夠直覺,語法很難記憶,總覺得有改進空間。


Posted

in

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *