計画とテストのためのランダムな日付ジェネレーター
うるう年の処理と ISO 出力を使用して、スケジュール、シミュレーション、テスト用の有効なランダムな日付を包括的な範囲内で作成します。
ランダムな日付は、サンプル スケジュール、ゲーム イベント、シミュレーション、およびソフトウェア テストに役立ちます。信頼できる方法は、月、日、年を個別に生成しないことです。有効な日付範囲内でランダムなオフセットを選択することです。
重要なポイント
- 何かを生成する前に、最も古い日付と最も新しい日付を定義します。
- 範囲を日数に変換し、ランダムな日のオフセットを選択します。
- 毎月の日の数字を考え出すのではなく、日付の計算を使用します。
- エンドポイントが含まれるかどうか、および時刻が重要かどうかを決定します。
- 再現可能な結果を得るために、タイムゾーンと日付形式を記録します。
独立した月、日、年の値が失敗する理由
月にはさまざまな長さがあり、閏年では 2 月が変わります。各月に 1 から 31 までの日を選択すると、通常の年では 4 月 31 日や 2 月 29 日など、無効な結果が生成される可能性があります。また、日数が少ない月には異なる有効確率が与えられます。
年、月、有効な日の順に選択することもできますが、追加のルールが必要であり、すべての暦日に意図した確率が与えられるわけではありません。日をオフセットする方法は、よりシンプルで透明性が高くなります。
ランダムな日付ジェネレーターを使用して日付を生成する
ランダム日付ジェネレーター を開き、次の手順に従います。
- 開始日と終了日を選択します。
- 結果の数を設定し、必要に応じて「重複なし」を有効にします。
- 出力を順序付けする必要がある場合は、時系列の並べ替えを選択します。
- 日付を生成し、ISO 値をコピーします。
- 再現する必要があるテスト ケースの範囲と設定を保存します。
内部的には、ツールはエンドポイント間の日数を計算し、均一のオフセットを選択し、UTC 日付のみの算術を使用して開始位置に追加します。
たとえば、1 月 1 日のみを含む 1 日の範囲には、オフセット 0 が 1 つあります。1 月 1 日から 1 月 31 日までの範囲には、0 から 30 までの 31 個のオフセットがあります。
ジェネレーターはローカルで実行され、各オフセットに対してブラウザーの暗号化ランダム ソースを使用します。また、要求された一意の数が選択された範囲内に収まるかどうかもチェックします。
包括的エンドポイントと排他的エンドポイント
包含範囲には、開始日と終了日の両方が含まれます。排他的終了範囲には開始が含まれますが、終了の手前で停止します。ここではオフバイワンエラーがよくあるため、テストまたはアクティビティの横にルールを書きます。
1 月 1 日から 12 月 31 日までの通年では、最終日が結果となる可能性があります。代わりに翌年の 1 月 1 日を排他的なエンドポイントとして使用する場合は、その境界に対するオフセットを計算します。
うるう年と暦算
カレンダー対応ツールを使用して日を追加すると、うるう年は正しく処理されます。どの暦法でも、毎年が 365 日である、または 4 年ごとが閏であると想定しないでください。最新のビジネス アプリケーションのほとんどには、プロレプティック・グレゴリオ暦と標準の日付ライブラリで十分です。
暦と地域の養子縁組日は異なるため、歴史的な日付には特に注意が必要です。結果が法的、科学的、または歴史的に重要な場合は、タイムゾーンだけでなく暦法も文書化してください。
タイムゾーンと時刻
カレンダーの日付はタイムスタンプと同じではありません。 MDN Date リファレンス では、基礎となる JavaScript モデルについて説明しています。 2027-03-08 などの日付のみの値は、別のタイムゾーンから表示する場合に変更する必要はありません。ローカルの午前 0 時のタイムスタンプを介して変換すると、誤って前日または翌日に移動する可能性があります。
日付のみの結果の場合は、計算を日付のみのタイプに保つか、一貫した UTC 規則を使用してください。ランダムな時刻も必要な場合は、タイムゾーンを定義し、許可された間隔内で秒または分を生成し、夏時間への移行を考慮します。
計画、シミュレーション、テスト
ランダムな日付を使用して、架空のプロジェクトのマイルストーン、ランダム化された練習スケジュール、サンプル トランザクション、または月や年の境界付近のテスト ケースを作成します。 2 月 29 日、月末、夏時間の変更、最小日と最大日など、意図的なエッジケースも含めます。
ランダム テストは、決定論的な例を補完する必要があります。失敗したテストを再現できるように、生成されたオフセット、範囲、およびタイム ゾーンを失敗したテストとともに保存します。
結論
明確に定義された範囲内で均一な日のオフセットを選択して、ランダムな日付を生成します。カレンダー対応の演算で月の長さと閏年を処理し、日付のみの値をタイムスタンプから分離します。明示的なエンドポイント、形式、タイムゾーンにより、ランダムな日付に関するバグのほとんどが防止されます。
ツールを試してみる
ランダム日付ジェネレーター
有効なランダムな日付を生成します。