将日期时间字符串转换为正确的时区

2024-06-09 22:05:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经就这个话题进行了一些有益的讨论,但仍然不了解以下内容:

比方说,我有一个字符串“2008073006:23:54 PDT”,我想把它转换成一个时区感知的datetime对象。我明白,那dateutil.parser.parse文件()通常不会像“PDT”那样解析时区,但看起来它确实正确地解析了“UTC”和“EDT”。这些是例外吗?“EDT”是例外吗?b/c是我的本地时区?你知道吗

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)

Tags: 字符串importobjparserdatetimeparsedtutc
2条回答

作为一名飞行员,我认为你只需要更多地了解时区。这并不像你想的那么容易,但也不难我也是首先工作/转换为UTC时间,然后继续工作总是比较安全的(您还必须了解夏令时)。 如果您想为许多输入/输出这样做,您将需要一个数据库(internet)和一些regex(https://docs.python.org/3.6/howto/regex.html)。看看re-gex-lib,也许selenium可以改进您的程序。
哦,对不起,要清除EDT代表东部夏时制(夏季),EST代表东部标准时间(冬季)。例如,北美洲观察这两个时间,并在领土上划分它们

编辑 从http://pytz.sourceforge.net/*

不幸的是,对于许多时区,使用标准datetime构造函数的tzinfo参数“不适用于”pytz。你知道吗

问题和限制

UTC的偏移量被四舍五入到最接近的整分钟,因此欧洲/阿姆斯特丹1937年以前的时区将最多为30秒。这是Python datetime库的一个限制。 如果你认为时区定义不正确,我可能无法修复它。pytz是Olson时区数据库的直接翻译,需要对此源代码更改时区定义。如果您发现错误,应该将其报告给时区邮件列表,从http://www.iana.org/time-zones链接。你知道吗

在类似的情况下,我发现东部夏令时是一个例外:它通常与等效的标准时区名称一起可用/可解析,尽管太平洋时间或其他时间的名称不相同。你知道吗

相关问题 更多 >