【问题标题】:Python - Error in parsing datePython - 解析日期错误
【发布时间】:2018-04-19 15:50:27
【问题描述】:

尝试将日期解析为字符串并收到此错误。无法确定哪个变量不正确。

ValueError:时间数据“2017 年 6 月 1 日上午 12:00 IST”不匹配 格式 '%I:%M %p %Z on %B %d, %Y'

这里是代码

data = sorted(data['data'], key=lambda x: datetime.datetime.strptime(x['date']['pretty'], '%I:%M %p %Z on %B %d, %Y'), reverse=False)

【问题讨论】:

  • 您是否尝试过使用strftime 来查看是否可以使用格式代码重新创建日期数据?
  • 参见this answer 了解%Z 时区指令。
  • 用 UTC 替换 IST 是可行的——所以这肯定与时区有关。
  • IST 应该指的是什么?爱尔兰标准时间、印度标准时间、以色列标准时间等?正确的时间戳将使用与 UTC 的偏移量,而不是文本标签来指定时区。
  • @chepner 印度标准时间。我从一个以这种格式返回时间数据的外部 api 调用接收到这个时间数据。我将删除它的“IST”部分,因为我的程序中不再需要它。

标签: python


【解决方案1】:

dateutil 可能会对您有所帮助

演示:

from dateutil import parser
s = '12:00 AM IST on June 01, 2017'
print(parser.parse(s))

输出:

2017-06-01 00:00:00

注意:您遇到的问题是转换区域IST

【讨论】:

  • 能否确认结果中是否维护了时区信息?
  • 我试过了。无法获取区域parser.parse(s).strftime("%Y/ %Z") == 2017/
  • 那么datetime.strptime(x, '%H:%M %p IST on %B %d, %Y') 肯定是一个更好的主意吗?
  • @jpp。是的,这样更好
猜你喜欢
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
相关资源
最近更新 更多