Дата и время¶
В этом разделе описаны встроенные паттерны для генерации дат и времени в формате ISO.
DateTimePatterns¶
Форматы даты и времени по стандарту ISO.
date_iso = r"^(19|20)\d{2}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|2[0-8])$"
time_iso = r"^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$"
datetime_iso = r"^(19|20)\d{2}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|2[0-8])T([01]\d|2[0-3]):[0-5]\d:[0-5]\d$"
Пример использования¶
from fucktar.generator import BasePattern
from fucktar.config import PatternConfig
from fucktar.default_patterns.date import DateTimePatterns
class DateTimePatterns(BasePattern[DateTimeData]):
date_iso = DateTimePatterns.date_iso
time_iso = DateTimePatterns.time_iso
datetime_iso = DateTimePatterns.datetime_iso
pattern_config = PatternConfig(
scope="datetime",
unique_fields=["datetime_iso"]
)
Особенности паттернов¶
Дата (date_iso)¶
Паттерн генерирует даты в формате ISO 8601: YYYY-MM-DD.
Ограничения: - Год: 1900-2099 - Месяц: 01-12 - День: 01-28 (ограничение до 28 для упрощения, чтобы избежать високосных лет)
Примеры корректных значений:
- 2023-01-15
- 1999-12-28
- 2025-06-10
Время (time_iso)¶
Паттерн генерирует время в формате ISO 8601: HH:MM:SS.
Ограничения: - Час: 00-23 - Минута: 00-59 - Секунда: 00-59
Примеры корректных значений:
- 12:30:45
- 00:00:00
- 23:59:59
Дата и время (datetime_iso)¶
Паттерн генерирует дату и время в формате ISO 8601: YYYY-MM-DDTHH:MM:SS.
Сочетает в себе ограничения паттернов даты и времени.
Примеры корректных значений:
- 2023-01-15T12:30:45
- 1999-12-28T00:00:00
- 2025-06-10T23:59:59
Использование в моделях данных¶
При использовании этих паттернов в моделях данных, сгенерированные строки могут быть преобразованы в объекты даты/времени:
from dataclasses import dataclass
from datetime import datetime, date, time
@dataclass
class DateTimeData:
date_str: str
time_str: str
datetime_str: str
@property
def date_obj(self) -> date:
return date.fromisoformat(self.date_str)
@property
def time_obj(self) -> time:
return time.fromisoformat(self.time_str)
@property
def datetime_obj(self) -> datetime:
return datetime.fromisoformat(self.datetime_str)
Это позволяет работать с датами и временем как с объектами Python, сохраняя при этом возможность генерации через строковые паттерны.
Рекомендации¶
- Используйте эти паттерны для генерации дат в формате ISO
- При необходимости более точного контроля над диапазонами дат создавайте собственные паттерны
- Для работы с датами в коде используйте свойства для преобразования строк в объекты даты/времени