【发布时间】:2017-12-06 20:37:35
【问题描述】:
我已经就该主题进行了一些有用的讨论,但仍然不明白以下内容:
说,我有一个字符串“20080730 06:23:54 PDT”,我想将其转换为时区感知的日期时间对象。我了解,dateutil.parser.parse() 通常不会解析像“PDT”这样的时区,但看起来它确实可以正确解析“UTC”和“EDT”。这些是例外吗? “EDT”是我当地时区的例外吗?
import pytz
from dateutil.parser import parse
sdt="20080730 06:23:54 UTC"
dt_obj = parse(sdt)
dt_obj
datetime.datetime(2008, 7, 30, 6, 23, 54, tzinfo=tzutc())
sdt="20080730 06:23:54 EDT"
dt_obj = parse(sdt)
dt_obj
datetime.datetime(2008, 7, 30, 6, 23, 54, tzinfo=tzlocal())
sdt="20080730 06:23:54 PDT"
dt_obj = parse(sdt)
dt_obj
datetime.datetime(2008, 7, 30, 6, 23, 54)
【问题讨论】:
-
您不能依赖时区字符串,因为它们在全球范围内并不是唯一的。
-
@MarkRansom 尽管如此,它还是会转换/本地化“EDT”
-
我不知道为什么 EDT 可以工作,但 PDT 不行。但是,如果您查看timeanddate.com/time/zones 的时区缩写列表,您会发现 PST 可能表示太平洋标准时间,也可能表示皮特凯恩标准时间。
-
这可能与预定义的方法 tzutc() 和 tzlocal() 有关,但我有兴趣查看更多详细信息
-
这几乎可以肯定是因为
tzlocal提供了一个缩写。我什至无法让CST或CDT为我工作,即使那是我所在的时区。我使用的是 Windows 7,你的操作系统是什么?
标签: python datetime python-dateutil