【发布时间】:2021-07-05 06:23:44
【问题描述】:
我有格式为“25-Oct-20 1:00:00 AM GMT”和“25-Oct-20 12:00:00 AM BST”的时间戳,我希望将它们解析为可识别时区的日期时间。我尝试使用 strptime 格式 "%d-%b-%y %I:%M:%S %p %Z"
但是 datetime.strptime 的 %Z 参数不能将 BST 识别为有效输入,我无法找出处理解析夏令时的“正确”方法。
【问题讨论】:
-
您是不是班加罗尔标准时间或其他首字母缩写词的用户?这些三个字母的首字母缩写词没有标准。例如,IST 是印度、以色列和爱尔兰 S(tandard/ummer) 时间。 不要使用
BST -
来自the datetime docs
%Z:strptime() only accepts certain values for %Z: 1) any value in time.tzname for your machine’s locale 2) the hard-coded values UTC and GMT。所以BST意味着你的机器认为它意味着什么,如果它可以处理它的话。在我的机器上time.tzname只返回('EET', 'EEST') -
您好 Panagiotis,感谢您的回复。不幸的是,我别无选择,只能使用 BST,我正在从另一个使用 BST 指定夏令时(即英国夏令时)的服务中读取数据。
-
这能回答你的问题吗? Python datetime strptime() does not match format - 如果您在这里搜索 SO,还有更多与“
%Z与时区缩写不匹配”相关的问题 -
旁注:虽然
%Z适用于格林威治标准时间,但这是一个糟糕的选择,因为它无法解析到感知日期时间。
标签: python python-3.x datetime timezone python-datetime