【问题标题】:Python: strptime() format-timezone field not working as expectedPython:strptime() 格式时区字段未按预期工作
【发布时间】:2018-05-19 18:29:01
【问题描述】:

我正在尝试使用以下代码将给定的自定义格式日期字符串解析为纪元时间:

time_tuple = time.strptime('Tue Dec 05 13:01:48 PST 2017', '%a %b %d %X %Z %Y')
time_epoch = time.mktime(time_tuple)

给定的日期格式如代码所示。我面临的问题是在编译代码时我不断收到错误消息:

 ValueError: time data 'Tue Dec 05 13:01:48 PST 2017' does not match format '%a %b %d %X %Z %Y'

据我所知,格式似乎与指定的完全一致:https://docs.python.org/3/library/datetime.html

似乎有什么问题?

编辑: 我也尝试过使用日期时间而不是时间,但是没有用

time_tuple = datetime.strptime('Tue Dec 05 13:01:48 PST 2017', '%a %b %d %X %Z %Y')

根据下面的 cmets,似乎是时区字段 (%Z) 导致了问题。该字段似乎基于运行代码的时区,而不是输入字符串给出的时区。

【问题讨论】:

  • 它依赖于语言环境,所以可能你使用的是非英语语言环境,这意味着英文缩写是错误的。

标签: python datetime time


【解决方案1】:

您使用的时区与文档中描述的时区不同,但是,如果您更改时区,您可以试试这个:

import time
time_tuple = time.strptime('Tue Dec 05 13:01:48 EST 2017', '%a %b %d %X %Z %Y')
time_epoch = time.mktime(time_tuple)

【讨论】:

  • 但是time_tuple = time.strptime('Tue Dec 05 13:01:48 EST 2017', '%a %b %d %X %Z %Y') 抛出异常。我可以在本地复制它。
  • 很奇怪,我同时使用 Python2 和 Python3 运行它,它运行良好。
  • 我什至不确定从哪里开始。什么版本的 Python 3?但可以肯定:ValueError: time data 'Tue Dec 05 13:01:48 EST 2017' does not match format '%a %b %d %X %Z %Y'
  • @roganjosh Python 版本 3.6.2
  • 我已将其范围缩小到时区 %Z 参数。我遇到了同样的问题。根据文档,这似乎应该可行。我正在运行 Windows 10、Python 3.6.0。
猜你喜欢
  • 1970-01-01
  • 2022-09-29
  • 1970-01-01
  • 2020-12-02
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
相关资源
最近更新 更多