Генератор випадкових дат для планування та тестування
Створюйте дійсні випадкові дати в межах інклюзивного діапазону для розкладів, моделювання та тестування з обробкою високосного року та виходом ISO.
Випадкова дата корисна для зразкових розкладів, ігрових подій, моделювання та тестування програмного забезпечення. Надійним методом є не створення місяця, дня та року незалежно; це вибір випадкового зсуву в межах допустимого діапазону дат.
Ключові висновки
- Визначте найранішу та найпізнішу дати, перш ніж щось генерувати.
- Перетворіть діапазон на кількість днів і виберіть випадкове зміщення дня.
- Використовуйте арифметику дат, а не придумуйте номер дня для кожного місяця.
- Вирішіть, чи включено кінцеві точки та чи має значення час доби.
- Запишіть часовий пояс і формат дати для відтворюваних результатів.
Чому незалежні значення місяця, дня та року помиляються
Місяці мають різну довжину, а лютий змінюється у високосні роки. Вибір дня від 1 до 31 для кожного місяця може призвести до недійсних результатів, наприклад 31 квітня або 29 лютого у звичайному році. Це також надає місяцям з меншою кількістю днів іншу ефективну ймовірність.
Вибір року, потім місяця, а потім дійсного дня може працювати, але це вимагає додаткових правил і може не давати кожному календарному дню заплановану ймовірність. Метод денного заліку простіший і прозоріший.
Створіть дату за допомогою генератора випадкових дат
Відкрийте генератор випадкових дат і виконайте такі дії:
- Виберіть дату початку та дату завершення.
- Встановіть кількість результатів і ввімкніть «Без дублікатів», якщо потрібно.
- Виберіть хронологічне сортування, коли вихідні дані мають бути впорядковані.
- Згенеруйте дати та скопіюйте значення ISO.
- Збережіть діапазон і налаштування з будь-яким тестом, який потрібно відтворити.
Внутрішньо інструмент обчислює кількість днів між кінцевими точками, вибирає рівномірний зсув і додає його до початку, використовуючи арифметику лише для дати UTC.
Наприклад, одноденний діапазон, який містить лише 1 січня, має одне можливе зміщення: 0. Діапазон з 1 по 31 січня має 31 можливе зміщення, від 0 до 30.
Генератор працює локально та використовує криптографічне випадкове джерело браузера для кожного зміщення. Він також перевіряє, чи запитана унікальна кількість відповідає вибраному діапазону.
Включні та ексклюзивні кінцеві точки
Включний діапазон включає як початкову, так і кінцеву дати. Ексклюзивний кінцевий діапазон включає початок, але зупинку перед кінцем. Тут часто трапляються помилки «не на один», тому напишіть правило поруч із тестом або вправою.
Для повного року з 1 січня по 31 грудня включно останній день має бути можливим результатом. Якщо натомість ви використовуєте 1 січня наступного року як ексклюзивну кінцеву точку, обчисліть зсув щодо цієї межі.
Високосні роки та календарна арифметика
Високосні роки обробляються правильно, якщо ви додаєте дні за допомогою інструмента, що підтримує календар. Не думайте, що кожен рік має 365 днів або що кожен четвертий рік є високосним у кожній календарній системі. Для більшості сучасних бізнес-додатків достатньо пролептичного григоріанського календаря та стандартної бібліотеки дат.
Історичні дати вимагають особливої обережності, оскільки календарі та регіональні дати прийняття відрізняються. Якщо результат має юридичне, наукове чи історичне значення, задокументуйте календарну систему, а також часовий пояс.
Часові пояси та час доби
Календарна дата – це не те саме, що позначка часу; Посилання на дату MDN пояснює основну модель JavaScript. Значення лише дати, як-от 2027-03-08, не потребує змін під час перегляду з іншого часового поясу. Перетворення його через місцеву позначку опівночі може випадково перемістити його на попередній або наступний день.
Для результатів лише за датою використовуйте обчислення лише за датою або використовуйте узгоджену конвенцію UTC. Якщо вам також потрібен випадковий час, визначте часовий пояс, генеруйте секунди або хвилини в межах дозволеного інтервалу та враховуйте переходи на літній час.
Планування, моделювання та тестування
Використовуйте випадкові дати, щоб створити вигадані етапи проекту, рандомізовані графіки практики, зразки транзакцій або тестові випадки поблизу кордонів місяця та року. Включіть також навмисні крайні випадки: 29 лютого, кінець місяця, перехід на літній час, а також мінімальну та максимальну дати.
Випадкове тестування має доповнювати детерміновані приклади. Збережіть згенерований зсув, діапазон і часовий пояс із будь-яким невдалим тестом, щоб його можна було відтворити.
Підсумок
Згенеруйте випадкову дату, вибравши рівномірний зсув дня в межах чітко визначеного діапазону. Дозвольте арифметиці з урахуванням календаря обробляти тривалість місяців і високосні роки та зберігати значення лише дати окремо від позначок часу. Явні кінцеві точки, формати та часові пояси запобігають більшості помилок із випадковими датами.
Спробуйте засіб
Генератор випадкових дат
Створення дійсних випадкових дат.