Để chuyển đổi một lần trong một múi giờ múi giờ khác trong Python, bạn có thể use datetime.astimezone()
:
time_in_new_timezone = time_in_old_timezone.astimezone(new_timezone)
Với aware_dt
(một đối tượng datetime
ở một số múi giờ), để chuyển nó sang múi giờ khác và in lần trong một định dạng thời gian nhất định:
#!/usr/bin/env python3
import pytz # $ pip install pytz
time_format = "%Y-%m-%d %H:%M:%S%z"
tzids = ['Asia/Shanghai', 'Europe/London', 'America/New_York']
for tz in map(pytz.timezone, tzids):
time_in_tz = aware_dt.astimezone(tz)
print(f"{time_in_tz:{time_format}}")
Nếu f""
cú pháp không có sẵn, bạn có thể thay thế nó bằng "".format(**vars())
nơi bạn có thể thiết lập aware_dt
kể từ thời điểm hiện tại trong múi giờ địa phương:
from datetime import datetime
import tzlocal # $ pip install tzlocal
local_timezone = tzlocal.get_localzone()
aware_dt = datetime.now(local_timezone) # the current time
Hoặc từ chuỗi thời gian đầu vào trong múi giờ địa phương:
naive_dt = datetime.strptime(time_string, time_format)
aware_dt = local_timezone.localize(naive_dt, is_dst=None)
nơi time_string
có thể trông giống như: '2016-11-19 02:21:42'
. Nó tương ứng với time_format = '%Y-%m-%d %H:%M:%S'
.
is_dst=None
buộc ngoại lệ nếu chuỗi thời gian đầu vào tương ứng với thời gian địa phương không tồn tại hoặc không rõ ràng như trong quá trình chuyển đổi DST. Bạn cũng có thể vượt qua is_dst=False
, is_dst=True
.Xem các liên kết với thêm chi tiết tại Python: How do you convert datetime/timestamp from one timezone to another timezone?
lưu ý: nó in * các khoảnh khắc * thời gian khác nhau trong * múi giờ khác nhau *. OP hỏi về ** cùng một thời điểm ** trong các múi giờ khác nhau. – jfs