當任務是計算一個具名過去起始日期與裝置目前本地日期之間的完整格里高曆日數差距時,請選擇「Days Since Counter」,而非即時經過計時器或倒數至未來事件的計時器。這個工具只回答一個特定問題:自您輸入表單的 YYYY-MM-DD 日期以來,已經過了多少個完整的日曆天,而且每次載入頁面時都會依據您裝置的本地時鐘重新計算。選擇正確方法的意思是,要辨識出這個工具拒絕做什麼事,這樣才不會選錯用途。它不會在兩次造訪之間遞增數字,除非您儲存快照;當您輸入未來日期時,也不會變成「距今還有幾天」的計時器;它也不會解讀您的里程碑代表什麼意義。它同樣不會寄送提醒電子郵件、附加到個人檔案,或跨裝置同步。如果其中任何一項才是您真正問題的答案,生產力系列中的另一個工具會更合適。當問題真正是「自 X 以來過了多少天」時,Days Since Counter 就是正確的起點。

how do i choose the right approach to use days since counter
如何選擇使用 Days Since Counter 的正確方法

何時 Days Since Counter 是正確的工具

一個好用的計數器只有在您帶給它的問題,與它能產生的答案類型相符時,才會持續好用。Days Since Counter 回答的是一個日曆問題:自您輸入表單的日期以來,已經過了多少個完整的日曆天。其他生產力計數器回答的是不同的問題,強迫這個工具去執行那些工作,正是人們覺得它「無法運作」的最常見原因。

在您投入某個工作流程之前,請使用下表掃描您任務背後真正的問題:

您真正的問題最佳起點工具為何適合
自一個具名過去日期以來的完整格里高曆日數Days Since Counter穩定的完整日數計算,附有日期的本地快照,支援 PNG 或 CSV 匯出
自計時器啟動以來經過的時、分、秒Online Stopwatch即時正數計時並支援分段紀錄,而非日曆天數計算
重複手動事件的次數,例如點擊、造訪或項目數量Online Tally Counter每日本地累計次數並附 CSV 紀錄,而非「自 X 以來幾天」的答案
距離未來截止日的日、時、分Online Countdown Timer倒數至目標時間,而不是測量自過去日期以來的差距

如果您真正的任務是未來的截止日,Days Since Counter 將會拒絕該起始日期,請求就不會成功。如果您真正的任務是即時經過的時長,計數器只會單純顯示以天數計算的差距,這個差距在您等候的幾個小時內可能保持不變。這兩種情況都是您為這個問題選錯工具的訊號,而不是計數器本身的缺陷。

挑選有效的起始日期與里程碑名稱

表單接受兩個輸入欄位,只要您持續使用,這兩個欄位就會定義計數器:一個簡短的里程碑名稱和一個起始日期。里程碑名稱是僅出現在您本地紀錄中的私人標籤。它不會出現在 PNG 摘要和 CSV 檔案中,這讓兩種可分享的匯出檔案都不會夾帶個人內容。

起始日期必須是介於 1900 與 9999 之間的完整 YYYY-MM-DD 值。表單在執行任何計算之前,會先驗證月份與日期,包括格里高曆的閏年規則。根據美國海軍天文臺公布的曆法參考資料,這條規則是:能被 4 整除的年份為閏年,但世紀年例外,世紀年只有能被 400 整除時才是閏年。下表顯示這條規則如何處理常見的邊界情況:

年份可被 4 整除世紀年可被 400 整除閏年
2024
2023
2000
1900
2100

這條規則之所以重要,是因為二月的天數會依年份在 28 天與 29 天之間變動,進而影響相鄰日曆天之間的差距。這個工具也會刻意拒絕任何早於裝置本地日期的未來起始日期:未來起始日期會讓計數器變成「距今幾天」的計時器,而那並不是這個工具要回答的問題。如果您需要「距今幾天」的答案,請選擇專為此設計的工具。

設定並儲存您的第一個計數器

一旦您確定日曆天數差距才是真正的問題,設定計數器只需要幾個操作步驟。以下的步驟涵蓋從空白瀏覽器狀態到儲存第一張快照的首次工作階段。

  1. 在瀏覽器中開啟 Days Since Counter。不需要帳號、註冊或上傳。
  2. 在名稱欄位中輸入一個簡短的里程碑名稱。請使用您日後能辨識的內容,因為這個標籤是日後將每張快照對應回正確里程碑的依據。
  3. 選擇一個 YYYY-MM-DD 起始日期,可以是本地當天或更早的日期。表單會拒絕未來日期,所以如果欄位拒絕儲存,請檢查日期是否在未來。
  4. 儲存里程碑。儲存時會建立今日的第一張快照,並儲存在瀏覽器的本機儲存空間中,索引鍵為 counter:days-since-counter。
  5. 讀取所顯示的完整格里高曆日數。這個數字是透過將起始日期與今日本地日期都轉換為 UTC 午夜值、各自除以 86,400,000 毫秒,再用兩個整數天數相減而得。採用 UTC 基準可避免日光節約時間切換把日曆差距變成 23 或 25 小時的區間。
  6. 之後於不同的本地日期再次造訪,並點擊「Save today's snapshot」以在第一張之上再保留一筆有日期的紀錄。

第一張快照是計數器唯一會自動建立的快照,而且屬於今天。如果您一週後再回來,顯示的天數將已反映新的日曆差距,因為計數器會在每次載入頁面時重新計算。快照是另外一種紀錄,會把當下的讀數綁定在您造訪當天的日期,所以若略過快照,儲存紀錄中相鄰項目之間的差距就會變大。

建立快照紀錄而不竄改舊有含義

快照是計數器唯一持久的部分。顯示的天數會在每次載入頁面時重新計算,但儲存的快照會將今天的日曆天數結果連同拍攝日期寫入本地儲存空間。這就是為什麼我們能回頭檢視,知道在某個特定日期計數器顯示的數字,例如 47。

一份儲存的紀錄屬於單一起始日期。如果您想開始新的里程碑,計數器會要求您在儲存不同的起始日期之前先清除本地紀錄。原因很簡單:在舊起始日期下拍攝的快照,否則會在靜默的情況下被重新對應到新的起始日期,進而改變每一筆紀錄的意義。先清除可讓舊數字保留在當初儲存它們時所屬的里程碑。更深入的逐步說明可參考Days Since Counter 常見錯誤指南,其中詳細介紹了多個這類陷阱。

快照可以顯示零天,這是一個真實的日曆結果,而不是空白或缺失的值。紀錄中會保留零天的項目,讓時間軸能準確顯示里程碑從何時開始,包括建立當天也會保留。一份從零開始、每次造訪增加一筆紀錄的私人紀錄,就是這個工具所能產生的最乾淨版本。

當您需要瀏覽器外部的檔案時,匯出 PNG 或 CSV

當您想要一份瀏覽器以外的紀錄時,計數器會直接使用瀏覽器內建的 canvas 與 Blob API 在頁面中匯出兩種檔案類型。過程中沒有伺服器端處理步驟,這代表您的里程碑名稱、起始日期與快照在匯出時都不會離開您的裝置。

  • CSV 匯出會寫入一個三欄的簡易表格:Snapshot date、Start date 與 Days since。這樣一來,試算表或封存檔案就有足夠的脈絡來讀取每個值,而不需要依賴僅限瀏覽器內的標籤。
  • PNG 匯出會產生一張 1080 乘 1350 的摘要圖,內含本地當天的總計以及最近的快照清單。圖片中刻意省略網址與您自訂的里程碑名稱,以限制在您可能分享的檔案中夾帶多少個人內容。

如果瀏覽器無法寫入本地儲存空間,畫面上的計算仍然可以運作,但頁面會告訴您無法保留快照。在此狀態下,CSV 匯出將不會包含從未儲存過的資料列,所以請將這個警告視為提醒,讓您在建立打算長期保留的紀錄之前,先切換瀏覽器或解除儲存空間封鎖。

運用閏年規則的快速示範範例

要看出計數器實際在做什麼,最有用的單一方法是挑選一個落在閏年二月邊界的起始日期,然後看看接下來兩天的結果為何。假設里程碑從 2024-02-28 開始,而您在 2024-03-01 開啟頁面。

  • 根據上述規則,2024 是閏年,所以 2024 年的二月有 29 天。
  • 2024-02-28 會轉換為第 N 天的 UTC 午夜。2024-02-29 會轉換為第 N+1 天的 UTC 午夜。2024-03-01 會轉換為第 N+2 天的 UTC 午夜。
  • 將兩個整數天數相減得到 (N+2) 減 N = 2。

與 2023 年的同一個邊界比較:2023 不是閏年,所以二月有 28 天。從 2023-02-28 到 2023-03-01,整數天數相差一。因此計數器會回報 2024 年差距為兩天、2023 年差距為一天,這與日曆一致,而不是以 24 小時經過時間的計時器為依據。這個邊界也是在您信任較長期的紀錄之前,用來對照實體日曆驗證此工具最簡單的方法。

相關閱讀:辯論計時器方法比較:手動 vs 佇列