Python datetime

19 лютого 2020 р.

Naive - це об'єкт datetime без інформаіцiї про таймзону (tzinfo):

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2020, 2, 19, 9, 15, 6, 211358)

Aware - це об'єкт datetime у якого є інформаіцiя про таймзону (tzinfo):

>>> import datetime
>>> import pytz
>>> now_utc = pytz.utc.localize(datetime.datetime.utcnow())
datetime.datetime(2020, 2, 19, 9, 15, 6, 211358, tzinfo=<utc>)

Трансформація datetime з однієї таймзони до іншої:

>>> kyiv_tz_dt = now_utc.astimezone(pytz.timezone('Europe/kiev'))

Змінити naive datetime на aware datetime можна за допомогою функції replace():

>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2020, 2, 19, 9, 15, 6, 211358)
>>> tz = pytz.timezone('Europe/kiev')
>>> dt.replace(tzinfo=tz)
datetime.datetime(2020, 2, 19, 9, 15, 6, 211358, tzinfo=<DstTzInfo 'Europe/Kiev' LMT+2:02:00 STD>)

Інші дописи

Git Cherry Pick

Вишенька на торті - git команда, яка забирає тільки зміни

Python datetime

Timezone in Python: Naive & Aware - різниця