隨機日期產生器 會在兩個含端點的 YYYY-MM-DD 日期之間,均勻地抽出日曆日期,整個過程完全在您的瀏覽器中執行,沒有日光節約時間的偏移,且每次產生有 1,000 個日期的硬性上限。本速查表彙整了所有輸入、驗證規則、輸出格式、模式旗標與限制,讓您使用此工具時無需猜測。產生器會將每個日期視為一個 UTC 整數日序數,以從 1970-01-01 算起、精確 86,400,000 毫秒為單位測量,然後將每個選中的位置對應回 UTC 元件的 YYYY-MM-DD。隨機性來自瀏覽器的 Web Crypto getRandomValues,而非 Math.random(),並透過拒絕抽樣 (rejection-sampling) 程序消除純粹模運算所帶來的模數偏差。產生的清單永遠不會離開您的瀏覽器,工具不會靜默修復無效輸入,而編輯任何控制項都會清除先前的清單,因此舊的結果不會假冒符合新設定的輸出。無論您是設定抽籤、Excel 測試固定資料、課堂抽樣器,或寫作靈感排程,都可將以下章節當作快速參考。

random date generator cheat sheet
隨機日期產生器速查表:輸入與限制

產生器接受的輸入一覽

此工具提供三個控制項加上一個切換開關。每一項都有特定的格式,若設定錯誤也會有特定的失敗模式。

控制項接受的格式接受的範圍若違反規則
開始日期嚴格的 YYYY-MM-DD0001-01-01 至 9999-12-31回報為無效;絕不會靜默修復
結束日期嚴格的 YYYY-MM-DD0001-01-01 至 9999-12-31,必須等於或晚於開始日期回報為無效;絕不會靜默修復
數量整數1 至 1,000空白、零、分數、負數或超過 1,000 會產生清楚的錯誤訊息,明確說明並未截斷任何資料
允許重複切換開關開或關在唯一模式下,若數量大於含端點的天數跨度將被拒絕

兩端日期皆可被選中。從 2024-02-28 到 2024-03-01 的範圍,可能會抽出 2 月 28 日、2 月 29 日 (閏日) 或 3 月 1 日,絕不會只回傳兩端。一天的範圍是有效的,且必定只回傳那單一日期;若您需要該日期的多份複本,必須啟用重複模式。

如何使用隨機日期產生器

  1. 挑選開始日期與結束日期,格式須為嚴格的 YYYY-MM-DD。兩端日期都會包含在候選池中,因此請將它們設定為您想抽樣的精確含端點範圍。
  2. 輸入介於 1 到 1,000 之間的數量,並決定是否允許重複。對於從完整範圍中獨立抽樣,請保持切換開關為開啟;若希望每個日曆日只抽一次,請將其關閉。
  3. 產生清單,確認顯示的範圍與數量符合您的輸入,然後複製或記錄您在測試固定資料、範例排程、課堂抽籤或寫作靈感中需要的 YYYY-MM-DD 值。

編輯任一端點、數量或重複旗標,都會清除先前的結果,因此以舊設定產生的清單不會停留在畫面上,假裝符合目前的控制項。

日期驗證規則

驗證規則嚴格,且以 UTC 元件執行,遵循 ECMAScript Date 所實作的西曆行為 (依據 ECMAScript 規範:Date 物件 參考資料)。一般來說,能被 4 整除的年份為閏年,但世紀年除非能被 400 整除,否則為平年。實際上,這表示 2000-02-29 與 2024-02-29 會被接受為有效的日曆日期,而 1900-02-29 與 2023-02-29 則會被拒絕。月份與日期溢位也會被拒絕:例如 2025-04-31 這類輸入不會悄悄變成 5 月 1 日。實作使用 setUTCFullYear,而非 Date.UTC 傳統的兩位數年份解讀,因此 0001 至 0099 年會保持其字面意義的年份,而不會被位移到二十世紀。支援的西曆範圍從 0001-01-01 到 9999-12-31。

日光節約時間行為

產生器抽樣的是 UTC 整數日序數,並以 UTC 元件格式化結果,而非在當地午夜的時間上加時數。這項區別正是本工具存在的全部理由。在當地時間加上 24 小時,於時鐘變更時可能落在 23:00 或 01:00,導致顯示的日期被跳過或重複。將嚴格的 YYYY-MM-DD 轉為 UTC Date 物件上的年、月、日,讀回元件,將 UTC 毫秒值精確地除以 86,400,000,然後相對於 1970-01-01 在這些整日位置上抽樣,即為結構性的修正方法。相同的做法在 在 JavaScript 中產生不含日光節約時間漂移的隨機日期 一文亦有說明,而底層的日期語意則由上述 ECMAScript 規範所定義。

重複模式 vs 唯一模式

行為重複模式 (切換開啟)唯一模式 (切換關閉)
抽樣方法每次要求的抽樣獨立地從完整含端點範圍中抽樣稀疏的局部 Fisher-Yates 不放回抽樣
同一個日期會重複嗎?會,這是設計上的預期行為不會;每個日期最多只出現一次
每個候選日期的機率每次抽樣皆相等每次抽樣皆相等,但會移除先前已抽中的項目
在小範圍內的數量上限最多 1,000,即使範圍只有一天不得超過含端點的天數跨度
記憶體使用輪廓隨所要求的數量成長隨所要求的數量成長,而非隨數百萬天的範圍成長
若數量過大僅當數量超過 1,000 時才會產生錯誤當數量超過可用日期數時會產生錯誤;絕不會悄悄啟用重複
適用情境蒙地卡羅測試資料、課堂抽樣、骰子式重複不重複的生日、稽核紀錄、唯一的範例排程

機率相等並不保證某次執行結果看起來均勻分布,而且重複模式確實可能合理地重複某些值。若您希望某次結果一眼看起來較為平衡,請多抽一些再自行刪減。

輸出格式與結果限制

結果以穩定的 YYYY-MM-DD 格式回傳,與輸入所要求的格式相同。產生器絕不會附加時段、時區時差或長日期格式。日期並不會排除週末、國定假日、歷史曆法轉換、無法預訂的日期或機構特定的禁日時段,因此請在使用某日期進行實際流程前另行檢查這些限制。硬性的結果上限為每次產生 1,000 個日期。空白的數量、分數、零、負數或超過 1,000 的數值,會產生清楚的錯誤訊息,明確說明允許範圍且未截斷任何資料。唯一模式會拒絕大於可用日期數的數量,而不會回傳較少的結果或悄悄啟用重複模式。

隨機性方法與稽核指引

隨機性取自瀏覽器的 Web Crypto,透過 getRandomValues 取得無符號 32 位元字組 (unsigned 32-bit words),依據 W3C Web Cryptography API 參考資料。若直接以模運算將隨機字組對應到日期,當範圍大小無法整除 2^32 時,部分日期會多出一個可能的來源值,因此產生器採用拒絕抽樣程序:只接受大小為可用日期數之精確倍數的最大前導區間,再套用模運算。如此每個被接受的序數都擁有相同數量的對應 32 位元值。一個有限度的安全防護機制會在 API 反覆回傳位於被拒絕尾端的值時,回報隨機來源失敗。本工具不使用 Math.random()。若需用於確定性的軟體測試,請儲存產生的日期或執行您自己的具種子產生器;Web Crypto 在本介面中刻意無法被植入種子。若某次抽選具有財務、法律、競賽、安全或稽核上的影響,請使用具備獨立監督與證據留存的文件化程序,因為本工具提供的是用於一般實務工作、謹慎且無偏差的抽樣,而非經認證的隨機抽籤服務。

若您正在權衡各種選項,隨機 IP 產生器範例:各模式輸出 一文對此有詳細說明。