對(duì)timzone的操作總是感覺(jué)特別的繁雜,經(jīng)過(guò)牛人指點(diǎn)从诲,提煉出來(lái)幾個(gè)比較常用的timezone操作俺夕。
import pytz
from datetime import datetime
time_str = "2018-04-20 10:10:05"
time_obj = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S") # at this point, time_obj is timezone-naive
time_obj_la = pytz.timezone("America/Los_Angeles").localize(time_obj) # now time_obj_la is timezone-aware, python automatically add daylight saving time if needed
print(time_obj_la) # 2018-04-20 10:10:05-07:00
time_obj_utc = time_obj_la.astimezone(pytz.timezone("UTC"))
print(time_obj_utc) # 2018-04-20 17:10:05+00:00
# convert datetime object to string, no need to remove timezone info
time_str_utc = time_obj_utc.strftime("%Y-%m-%d %H:%M:%S") # 2018-04-20 17:10:05
time_str_la = time_obj_la.strftime("%Y-%m-%d %H:%M:%S") # 2018-04-20 10:10:05
# remove timezone info (make datetime object timezone-naive)
time_utc = time_obj_utc.replace(tzinfo=None) # datetime.datetime(2018, 4, 20, 17, 10, 5)
python中timezone的代碼并不是跟國(guó)際時(shí)區(qū)一一對(duì)應(yīng)辆苔,轉(zhuǎn)換的時(shí)候需要了解pytz library中的時(shí)區(qū)代碼
for tz in pytz.all_timezones:
print(tz)