This is a tiny utility to simplify the everyday pain of working with UTC datetimes and ISO 8601 strings in Python.
- Easy: create UTC datetimes without thinking about it.
- Type-safe: don't accidentally mix and match UTC with non-UTC or naive datetimes.
- ISO 8601: convert to and from ISO 8601 datetimes with ease (and use Z as the timezone instead of +00:00).
- Safe Format: don't accidentally convert to anything else.
- Flexible Parsing: parses various ISO 8601 formats - with/without microseconds and/or with Z or +HH:MM timezones.
- No Dependencies. we don't need to pull in pytz just for UTC.
- Interoperate: with regular datetime objects where necessary.
- Familiar: similar names and conventions to working with datetime.
>>> from utctime import UtcTime
>>> UtcTime.now()
UtcTime(...)
>>> UtcTime(2030).todatetime()
datetime.datetime(2030, 1, 1, 0, 0, tzinfo=datetime.timezone.utc)
>>> UtcTime(2030)
UtcTime(2030-01-01T00:00:00Z)
>>> UtcTime(2030).iso()
'2030-01-01T00:00:00Z'
>>> UtcTime.parse_iso("2030-01-01T00:00:00Z")
UtcTime(2030-01-01T00:00:00Z)
>>> UtcTime.parse_iso("2030-01-01T06:0:00.000+02:00")
UtcTime(2030-01-01T04:00:00Z)
>>> UtcTime(1999).year
1999
>>> UtcTime(1970, 5).month
5
>>> UtcTime(1980, 3, 13).day
13
>>> UtcTime(1970, 1, 1).timestamp()
0.0
>>> UtcTime(1970) < UtcTime(1980)
True
>>> UtcTime(1980) == UtcTime(1981)
False
>>> UtcTime(1981) > UtcTime(1980)
True
You can also compare with datetimes, add/subtract timedeltas, replace fields, and convert from datetimes.
See the API reference for full details.
.. toctree:: api