Days Since Counter 會計算從過去或現在的起始日期到本機當地日期之間,已經過了多少個格里高利曆日數,並把結果以附帶日期的快照形式保存在瀏覽器中。開啟 Days Since Counter,為里程碑取一個簡短名稱(例如「Project kickoff」或「New routine」),選擇一個完整的 YYYY-MM-DD 起始日期(必須是今天或更早),頁面就會回傳從該起始日到您正在檢視的裝置當地日期之間的整個日曆天數。儲存起始日期會建立今日的第一張快照,之後再次造訪時,快照控制項可讓您再保留一筆附帶日期的紀錄。快照會以瀏覽器鍵值 counter:days-since-counter 儲存在本機,並不會送到伺服器,因此里程碑名稱、起始日期和歷史紀錄都會留在這台裝置上,除非您自行匯出。頁面在回傳數字之前會先檢查月份長度與格里高利曆閏年規則,這也是為什麼像 2024-02-28 這樣的日期,到了 2024-03-01 會正確顯示為 2 天,雖然您的行事曆可能感覺更短。

工具背後實際在做什麼
Days Since Counter 回答的是日曆問題,而不是像手動加一按鈕那樣運作。您給它一個已命名的過去或現在日期,它會告訴您該日期與您目前使用的裝置當地日期之間,相隔多少個完整的格里高利曆日數。沒有任何計時器在跑、沒有開始按鈕,也不需要在午夜跨日時重新整理——計數會根據起始日期與裝置時鐘重新計算。
計算是把您輸入的年、月、日透過 Date.UTC(year, month - 1, day) 轉成 UTC 午夜值,再除以 86,400,000 取得整數天數,最後將起始日與裝置當地日的兩個整數天數相減。由於相減發生在 UTC 午夜,本地的夏令時間切換不會把一日的日曆差距變成 23 或 25 小時。顯示結果仍繫結於任何已儲存快照所使用的裝置當地日,這也是為什麼計數會在裝置跨越當地午夜時更新,而不是在 UTC 時鐘跳動的那一刻。
本工具不會解讀您的里程碑代表什麼、不會為未來事件建立倒數、不會提醒您,也不會宣稱該日期具有法律、財務、醫療或契約上的意義。如果這才是真正的需求,您需要的是其他類型的工具或流程。一個中性、個人的里程碑——例如您開始的一項作息改變、一個正在追蹤的保養週期、一個私人紀念日,或某個專案啟動的那一天——才是這個頁面設計來回答的問題。
挑選第一個里程碑與起始日期
里程碑名稱是快照清單中每列旁邊所顯示的標籤,也是您之後可能匯出的 CSV 檔案中的副作用欄位。請保持簡短、中性且本身不含歧義:「Quit smoking」、「New sleep routine」、「Garage service log」或「Project kickoff」都很合適。請避免在里程碑欄位中放入您的全名、地址或任何敏感資訊,因為名稱會和計數留在同一筆本機紀錄中。
起始日期欄位接受介於 1900 年到 9999 年之間的完整 YYYY-MM-DD 值。您不能只輸入「Feb 28」而沒有年份、不能使用「28/02/2024」這種日-月-年格式,也不能填入任何不完整的值。頁面在計算之前會先檢查月份與日期,包括格里高利曆閏年規則:能被 4 整除的年份是閏年,但世紀年除外,世紀年只有在能被 400 整除時才是閏年。由於驗證機制的關係,2000-02-29 是有效日期,但 1900-02-29 不是。
只接受過去或現在的起始日期。表單會拒絕未來的數值,而不是悄悄把頁面變成倒數計時器,所以如果您想要對未來日期倒數,Online Countdown Timer 會是更合適的選擇。第一次使用時,請挑一個幾週或幾個月前就開始的里程碑,這樣第一次載入頁面時就能看到非零的數字。
如何開啟工具並執行第一次計數
- 在瀏覽器中開啟 Days Since Counter。頁面會顯示一個空白的里程碑欄位、一個空白的 YYYY-MM-DD 日期欄位,以及一個儲存控制項。
- 為您要追蹤的里程碑輸入一個簡短名稱,例如「Project kickoff」或「New routine」。
- 選擇一個過去或現在的起始日期,格式為 YYYY-MM-DD。例如,如果里程碑在當天開始,請輸入 2024-02-28。
- 送出表單。頁面會在顯示數字之前,先檢查四位數年份、月份、日期與閏年規則。
- 在主顯示區讀取格里高利曆日數的結果。儲存起始日期會自動為您正在檢視的裝置當地日建立第一張快照。
- 之後改天再回來,再次點擊快照控制項,就能在同一個起始日期下保留另一筆附帶日期的本機紀錄。
如何解讀日曆天數結果
畫面上的數字是您儲存的起始日期與頁面開啟當下裝置當地日期之間,所經過的完整格里高利曆天數。下列兩個例子說明了閏年規則如何在顯示中呈現:
| 起始日期 | 裝置當地日期 | 相隔天數 | 原因 |
|---|---|---|---|
| 2024-02-28 | 2024-03-01 | 2 | 2024 是閏年,所以 2 月有 29 天 |
| 2023-02-28 | 2023-03-01 | 1 | 2023 不是閏年,所以 2 月只有 28 天 |
| 2000-02-28 | 2000-03-01 | 2 | 2000 是能被 400 整除的世紀年,所以是閏年 |
| 1900-02-28 | 1900-03-01 | 1 | 1900 是不能被 400 整除的世紀年,所以不是閏年 |
以閏年情境為例:取起始日期 2024-02-28,裝置當地日期 2024-03-01。兩個日期會先各自轉換為 UTC 午夜,再除以 86,400,000 並向下取整為整數天數。2024-03-01 的整數天數減去 2024-02-28 的整數天數等於 2,這也對應到包含閏日 2024-02-29 的格里高利曆差距。2023-02-28 與 2023-03-01 這組非閏年日期的相減結果則為 1,因為 2023 年沒有 2 月 29 日。
由於頁面使用 UTC 午夜來做相減,裝置上的夏令時間切換不會把一日的日曆差距變成 23 或 25 小時。顯示結果仍會在裝置當地日跨日時更新,這也是快照能與您預記錄的日期保持一致的原因。至於為何使用 UTC 午夜而非本地 24 小時週期,日曆天數與 24 小時週期指南中有更完整的說明。
儲存快照並建立本機歷史紀錄
儲存起始日期會建立今日的第一張快照。在之後任何一次造訪中,快照控制項都會在歷史清單中新增一列,記錄目前的裝置當地日期以及當日的「自起始日起天數」。歷史清單完全隸屬於單一起始日期,並以瀏覽器鍵值 counter:days-since-counter 儲存,因此快照不會在瀏覽器、裝置或設定檔之間同步。
當里程碑在裝置當地日的當天開始時,快照可以合理地顯示為 0。這是真正的格里高利曆結果,而不是空白或缺少的計數,歷史紀錄會把這些零天的列和其他紀錄一起保留下來。如果裝置上無法使用瀏覽器儲存空間,顯示的計算仍然可以運作,但頁面會警告您無法在之後的造訪保留快照。
您的里程碑名稱、起始日期和快照歷史都是私人的本機瀏覽器資料。它們不會被送到 Lizely、不會與個人檔案連結,也不會跨裝置同步;清除網站瀏覽器資料會移除紀錄,而在另一個瀏覽器重新開始時則會是空的計數器。
在不覆寫舊紀錄的情況下切換里程碑
歷史清單隸屬於單一起始日期。如果您在已有快照的情況下變更起始日期,舊的快照會突然代表不同的意義,所以頁面會要求您先清除本機歷史,而不是默默改寫過去項目的含義。清除作業會清空目前里程碑的所有快照,讓您能像從頭開始一樣儲存新的起始日期。
因此,建立新里程碑的乾淨流程是:如果需要封存就匯出舊的里程碑、清除本機歷史、修改里程碑名稱、選擇新的過去或現在起始日期,然後再儲存一次。如果您希望第二個里程碑和第一個並行運作,而且您自己能分得清楚,可以使用 Multi Counter 的獨立實例,讓多個日數計數並列保存,而不是覆寫這個歷史清單。
在需要檔案時匯出 PNG 或 CSV
當您需要瀏覽器以外的檔案時,頁面可讓您匯出 PNG 影像或 CSV 檔案。CSV 是一個簡單的三欄檔案,包含 Snapshot date、Start date 和 Days since,足以讓試算表或封存檔在不依賴瀏覽器專屬標籤的情況下解讀每一筆紀錄。PNG 則是一張 1080 x 1350 的摘要圖,內容包含目前裝置當地日的總計以及最近的快照清單。
兩種匯出都是在瀏覽器內透過原生的 canvas 和 Blob API 直接產生,這也是它們即使在離線時仍可運作的原因。PNG 摘要中不會包含網址或您自訂的里程碑名稱,這讓分享檔案時的識別性較低。CSV 則會保留起始日期和快照日期,因此若日期屬敏感資訊,請在分享檔案前先遮罩這些欄位。
Days Since Counter 適用與不適用的情境
當真正的需求是一個具名的過去日期與日曆天數差距時,Days Since Counter 就是合適的工具。專案啟動、作息改變、您個人在追蹤的紀念日、保養週期以及具名的等待期,全都乾淨地落在這個範圍內。當問題是「我到現在為止做 X 已經多久了(以時分計算)」時,它就不適合——若要使用即時經過時間的計時器,請改用 Online Stopwatch。對於在單日內手動計算重複事件的需求,它同樣不適合,這時 Online Tally Counter 更為合適。如需更完整的並列比較,決策指南針對同樣的適用與避用情境有更詳細的說明。
開啟頁面、為里程碑命名、選擇一個過去或現在的 YYYY-MM-DD 起始日期、讀取明確的日曆天數、在需要時儲存快照,並且只在需要瀏覽器以外的檔案時才匯出。