Содержание
- Python Datetime with Timezones: Examples and Reference
- Current datetime in Timezone
- Datetime with Offset Timezone
- Add UTC Timezone to naive datetime
- Convert datetime to another timezone
- Python Datetime with Timezones: Examples and Reference
- Current datetime in Timezone
- Datetime with Offset Timezone
- Add UTC Timezone to naive datetime
- Convert datetime to another timezone
Python Datetime with Timezones: Examples and Reference
To get the current timestamp in UTC timezone, use datetime.now() passing timezone.utc :
from datetime import datetime, timezone dt = datetime.now(timezone.utc) dt # datetime.datetime(2021, 1, 3, 21, 14, 51, 547415, tzinfo=datetime.timezone.utc)
Current datetime in Timezone
from datetime import datetime, timezone, timedelta dt = datetime.now(timezone(timedelta(hours=-3))) dt # datetime.datetime(2021, 1, 3, 18, 29, 54, 46852, tzinfo=datetime.timezone(datetime.timedelta(-1, 75600)))
Datetime with Offset Timezone
Timezones can be defined by the offset with respect to UTC.
from datetime import datetime, timezone, timedelta # UTC+03:00 tz = timezone(timedelta(hours=3)) # May 10, 2016 at 12:30:00, on UTC-03:00 dt = datetime(2016,5,10,12,30,0,0, tzinfo=tz) dt # datetime.datetime(2016, 5, 10, 12, 30, tzinfo=datetime.timezone(datetime.timedelta(0, 10800)))
Add UTC Timezone to naive datetime
In other words, attach Timezone information to datetime objects that were created without timezone information, without adjusting the time
from datetime import datetime, timezone # this is a naive datetime without timezone information naive_dt = datetime.now() naive_dt # datetime.datetime(2021, 1, 3, 18, 33, 50, 631654) dt_with_tz = naive_dt.replace(tzinfo=timezone.utc) dt_with_tz # datetime.datetime(2021, 1, 3, 18, 33, 50, 631654, tzinfo=datetime.timezone.utc)
Convert datetime to another timezone
from datetime import datetime, timezone, timedelta # 21:36 in UTC base_dt = datetime.now(timezone.utc) base_dt # datetime.datetime(2021, 1, 3, 21, 36, 6, 339737, tzinfo=datetime.timezone.utc) # becomes 23:36 in UTC+02:00 dt_in_utc_plus_2 = base_dt.astimezone(timezone(timedelta(hours=2))) dt_in_utc_plus_2 # datetime.datetime(2021, 1, 3, 23, 36, 6, 339737, tzinfo=datetime.timezone(datetime.timedelta(0, 7200)))
Python Datetime with Timezones: Examples and Reference
To get the current timestamp in UTC timezone, use datetime.now() passing timezone.utc :
from datetime import datetime, timezone dt = datetime.now(timezone.utc) dt # datetime.datetime(2021, 1, 3, 21, 14, 51, 547415, tzinfo=datetime.timezone.utc)
Current datetime in Timezone
from datetime import datetime, timezone, timedelta dt = datetime.now(timezone(timedelta(hours=-3))) dt # datetime.datetime(2021, 1, 3, 18, 29, 54, 46852, tzinfo=datetime.timezone(datetime.timedelta(-1, 75600)))
Datetime with Offset Timezone
Timezones can be defined by the offset with respect to UTC.
from datetime import datetime, timezone, timedelta # UTC+03:00 tz = timezone(timedelta(hours=3)) # May 10, 2016 at 12:30:00, on UTC-03:00 dt = datetime(2016,5,10,12,30,0,0, tzinfo=tz) dt # datetime.datetime(2016, 5, 10, 12, 30, tzinfo=datetime.timezone(datetime.timedelta(0, 10800)))
Add UTC Timezone to naive datetime
In other words, attach Timezone information to datetime objects that were created without timezone information, without adjusting the time
from datetime import datetime, timezone # this is a naive datetime without timezone information naive_dt = datetime.now() naive_dt # datetime.datetime(2021, 1, 3, 18, 33, 50, 631654) dt_with_tz = naive_dt.replace(tzinfo=timezone.utc) dt_with_tz # datetime.datetime(2021, 1, 3, 18, 33, 50, 631654, tzinfo=datetime.timezone.utc)
Convert datetime to another timezone
from datetime import datetime, timezone, timedelta # 21:36 in UTC base_dt = datetime.now(timezone.utc) base_dt # datetime.datetime(2021, 1, 3, 21, 36, 6, 339737, tzinfo=datetime.timezone.utc) # becomes 23:36 in UTC+02:00 dt_in_utc_plus_2 = base_dt.astimezone(timezone(timedelta(hours=2))) dt_in_utc_plus_2 # datetime.datetime(2021, 1, 3, 23, 36, 6, 339737, tzinfo=datetime.timezone(datetime.timedelta(0, 7200)))