Python之字符串转换为⽇期、结合时区的⽇期操作
⼀、字符串转换为⽇期
⽅法⼀
s = '2019-01-20'
print(datetime.strptime(s, '%Y-%m-%d'))  # 2019-01-20 00:00:00
⽅法⼆
def parse_ymd(s):
year_s, mon_s, day_s = s.split('-')
return datetime(int(year_s), int(mon_s), int(day_s))
s = '2019-01-20'
res = parse_ymd(s)
print(res)  # 2019-01-20 00:00:00
⼆、结合时区的⽇期操作
对⼏乎所有涉及到时区的问题,你都应该使⽤ pytz 模块,这个包提供了Olson时区数据库,它是时区信息的事实上的标准,在很多语⾔和操作系统⾥⾯都可以到
pytz 模块⼀个主要⽤途是将 datetime 库创建的简单⽇期对象本地化,⼀旦⽇期被本地化了,它就可以转换为其他时区的时间了
需求:你有⼀个安排在2012年12⽉21⽇早上9:30的电话会议,地点在芝加哥。⽽你的朋友在印度的班加罗尔,那么他应该在当地时间⼏点参加这个会议呢?
from pytz import timezone
import pytz
d = datetime(2012, 12, 21, 9, 30, 0)
central = timezone('US/Central')  # 时间本⼟化
loc_d = central.localize(d)  # 转换为芝加哥时间对象
# 通⽤⽅法⼀:
#  处理本地化⽇期的通常的策略先将所有⽇期转换为UTC时间,并⽤它来执⾏所有的中间存储和操作
日期字符串是什么utc_d=loc_d.astimezone(pytz.utc)
# ⼀旦转换为UTC,你就不⽤去担⼼跟夏令时相关的问题了(美国标准夏令时时间开始于本地时间3⽉13⽇凌晨2:00(在那时,时间向前跳过⼀⼩时),本地化⽇期上执⾏计算时候会出现错误) bang_d1=utc_d.astimezone(timezone("Asia/Kolkata"))
# ⽅法⼆,直接转为班加罗尔时间
bang_d2 = loc_d.astimezone(timezone('Asia/Kolkata'))  # 转换未班加罗尔时间
print(bang_d1,bang_d2)    # 2012-12-21 21:00:00+05:30 2012-12-21 21:00:00+05:30
# 补充可以使⽤ISO 3166国家代码作为关键字去查阅字典 untry_timezones 查对应的时区名
untry_timezones["IN"])  # ['Asia/Kolkata']

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。