gpt4 book ai didi

python - 在具有 BST 时区的 Windows 上使用 python datetime.datetime.strptime

转载 作者:可可西里 更新时间:2023-11-01 10:39:29 27 4
gpt4 key购买 nike

我需要解析许多不同格式的许多不同日期。我遇到以下问题,想知道是否有人可以解释原因;

以下适用于 linux 系统:

from datetime import datetime
datetime.strptime('Tue 23 Aug 2011 09:00:07 PM BST','%a %d %b %Y %H:%M:%S %p %Z')

但是在windows下运行会引发

ValueError: 时间数据格式不匹配

但是,如果我在 Windows 上尝试 GMT 而不是 BST,它工作正常;

from datetime import datetime
datetime.strptime('Tue 23 Aug 2011 09:00:07 PM GMT','%a %d %b %Y %H:%M:%S %p %Z')

有什么原因python在windows下不理解BST时区,但在Linux下却能正常工作?

谢谢,

马特。

最佳答案

在我看来,像这样解析三个字母的时区代码并不是一个好的做法(当然除非你别无选择)。例如,“EST”在美国普遍用于 UTC-4/5,在澳大利亚也普遍使用。因此,对“EST”的任何支持都必须依赖于语言环境。如果“BST”同样含糊不清,我也不会感到惊讶。

我强烈推荐使用 pytz英国民用时间被赋予字符串标识符 Europe/London 和 UTC 的模块被称为 Etc/UTCpytz API 将提供一致的结果,而不管用户的区域设置或运行应用程序的系统如何。

如果您正在处理必须绑定(bind)到语言环境的 UI,或者使用您无法更改的格式解析输入,那么请考虑使用 pytz 时区对象的缩写字典。例如:{'BST': 'Europe/London'}。然后您的应用程序可以统一使用 UTC 日期和时间,这将大大减少出错的可能性。

关于python - 在具有 BST 时区的 Windows 上使用 python datetime.datetime.strptime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7177860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com