我有以下 python 片段:
from datetime import datetime
timestamp = '05/Jan/2015:17:47:59:000-0800'
datetime_object = datetime.strptime(timestamp, '%d/%m/%y:%H:%M:%S:%f-%Z')
print datetime_object
Run Code Online (Sandbox Code Playgroud)
但是,当我执行代码时,出现以下错误:
ValueError: time data '05/Jan/2015:17:47:59:000-0800' does not match format '%d/%m/%y:%H:%M:%S:%f-%Z'
Run Code Online (Sandbox Code Playgroud)
我的匹配表达式有什么问题?
编辑2:根据这篇文章,strptime不支持%z(尽管文档建议)。为了解决这个问题,你可以忽略时区调整吗?:
from datetime import datetime
timestamp = '05/Jan/2015:17:47:59:000-0800'
# only take the first 24 characters of `timestamp` by using [:24]
dt_object = datetime.strptime(timestamp[:24], '%d/%b/%Y:%H:%M:%S:%f')
print(dt_object)
Run Code Online (Sandbox Code Playgroud)
给出以下输出:
$ python date.py
2015-01-05 17:47:59
Run Code Online (Sandbox Code Playgroud)
编辑:你的datetime.strptime论点应该是'%d/%b/%Y:%H:%M:%S:%f-%z'
与strptime(),%y指的是
不带世纪的年份作为补零十进制数
即01, 99, 等.
如果您想使用完整的 4 位数年份,则需要使用%Y
同样,如果您想使用 3 个字母的月份,则需要使用%b,而不是%m
我没有查看字符串的其余部分,但可能还有更多不匹配的地方。您可以在https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior了解如何在表中定义每个部分
| 归档时间: |
|
| 查看次数: |
6348 次 |
| 最近记录: |