Python之字符串转换为日期结合时区的日期操作

Posted 朱兆筠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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国家代码作为关键字去查阅字典 pytz.country_timezones 查找对应的时区名
print(pytz.country_timezones["IN"])   # [‘Asia/Kolkata‘]

 



以上是关于Python之字符串转换为日期结合时区的日期操作的主要内容,如果未能解决你的问题,请参考以下文章

使用时区将字符串转换为日期

Python 字符串到 Django 时区(知道日期时间)

如何将日期字符串转换为没有时区的日期对象

Python:如何将日期时间/时间戳从一个时区转换为另一个时区?

JavaScript:将 UTC 日期时间转换为传递时区的日期时间

将特定时区中的日期转换为 Python 中的时间戳