| 48 | |
| 49 | |
| 50 | class DateTime(datetime.datetime, Date): |
| 51 | EPOCH: ClassVar[DateTime] |
| 52 | min: ClassVar[DateTime] |
| 53 | max: ClassVar[DateTime] |
| 54 | |
| 55 | # Formats |
| 56 | |
| 57 | _FORMATS: ClassVar[dict[str, str | Callable[[datetime.datetime], str]]] = { |
| 58 | "atom": ATOM, |
| 59 | "cookie": COOKIE, |
| 60 | "iso8601": lambda dt: dt.isoformat("T"), |
| 61 | "rfc822": RFC822, |
| 62 | "rfc850": RFC850, |
| 63 | "rfc1036": RFC1036, |
| 64 | "rfc1123": RFC1123, |
| 65 | "rfc2822": RFC2822, |
| 66 | "rfc3339": lambda dt: dt.isoformat("T"), |
| 67 | "rss": RSS, |
| 68 | "w3c": W3C, |
| 69 | } |
| 70 | |
| 71 | _MODIFIERS_VALID_UNITS: ClassVar[list[str]] = [ |
| 72 | "second", |
| 73 | "minute", |
| 74 | "hour", |
| 75 | "day", |
| 76 | "week", |
| 77 | "month", |
| 78 | "year", |
| 79 | "decade", |
| 80 | "century", |
| 81 | ] |
| 82 | |
| 83 | _EPOCH: datetime.datetime = datetime.datetime(1970, 1, 1, tzinfo=UTC) |
| 84 | |
| 85 | @classmethod |
| 86 | def create( |
| 87 | cls, |
| 88 | year: SupportsIndex, |
| 89 | month: SupportsIndex, |
| 90 | day: SupportsIndex, |
| 91 | hour: SupportsIndex = 0, |
| 92 | minute: SupportsIndex = 0, |
| 93 | second: SupportsIndex = 0, |
| 94 | microsecond: SupportsIndex = 0, |
| 95 | tz: str | float | Timezone | FixedTimezone | None | datetime.tzinfo = UTC, |
| 96 | fold: int = 1, |
| 97 | raise_on_unknown_times: bool = False, |
| 98 | ) -> Self: |
| 99 | """ |
| 100 | Creates a new DateTime instance from a specific date and time. |
| 101 | """ |
| 102 | if tz is not None: |
| 103 | tz = pendulum._safe_timezone(tz) |
| 104 | |
| 105 | dt = datetime.datetime( |
| 106 | year, month, day, hour, minute, second, microsecond, fold=fold |
| 107 | ) |
searching dependent graphs…