【问题标题】:Python parsing date with strptimePython用strptime解析日期
【发布时间】:2015-10-28 16:59:47
【问题描述】:

我有以这种格式返回日期的网址

url_date = "2015-01-12T08:43:02Z"

我不知道为什么会有字符串,如果使用"2015-01-1208:43:02" 来解析它会更简单

datetime.datetime.strptime(url_date , '%Y-%m-%d')

但它不起作用。我试过了

%Y-%m-%d
%Y-%m-%d-%H-%M-%S
%Y-%m-%d-%H-%M-%S-%Z

但我不断收到诸如“时间数据 2015-01-12T08:43:02Z 不匹配...”之类的错误

【问题讨论】:

标签: python python-3.x datetime datetime-parsing


【解决方案1】:

您要查找的格式是 - '%Y-%m-%dT%H:%M:%SZ'

例子-

>>> url_date = "2015-01-12T08:43:02Z"
>>> import datetime
>>> datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2015, 1, 12, 8, 43, 2)

对于cmets中的新需求-

如果我想用 2015-01-12:08:43:02 中的字符串返回时间,那么哪些方法应该在 datetime().datetime() 之后使用

您需要在datetime.datetime 对象上使用.strftime(),格式为-'%Y-%m-%d:%H:%M:%S'。示例 -

>>> url_date = "2015-01-12T08:43:02Z"
>>> dt = datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
>>> dt.strftime('%Y-%m-%d:%H:%M:%S')
'2015-01-12:08:43:02'

如果你想要时间组件,你可以使用.time()。示例 -

>>> dt = datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
>>> dt.time()
datetime.time(8, 43, 2)

【讨论】:

  • 谢谢,只是一个简单的问题 .. 如果我想用 2015-01-12:08:43:02 中的字符串返回时间,哪些方法应该在 datetime().datetime( )
  • 您希望结果为字符串?以那种格式?如果是这样,请检查上面给出的.strftime() 示例。
  • 我只希望它作为字符串,就像你的第一个示例 2015-01-12:08:43:02 我刚刚尝试过的那样,我得到了 error, required argument 'format' (pos 1) not found
【解决方案2】:

您在最后一次尝试中接近“Z” - 您需要在格式字符串中指定 T、Z 和冒号字面值。

>>> import datetime
>>> url_date = "2015-01-12T08:43:02Z"
>>> datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2015, 1, 12, 8, 43, 2)

【讨论】:

  • 谢谢,只是一个简单的问题 .. 如果我想用 2015-01-12:08:43:02 中的字符串返回时间,datetime().datetime() 之后应该使用哪些方法?
  • 简而言之,我想将时间提交到数据库,而DATETIME字段不能接受超过特定位数的数字,即2015-10-4:06:13:22所以,我想知道它是如何恢复的
  • 所以你想将它一个日期时间,一个字符串?使用datetime_obj.strftime("%Y-%m%d:%H:%M:%S")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
相关资源
最近更新 更多