像2016-09-22T13:57:31.2311892-04:00
这样的字符串一样,如何获取日期时间对象?
我尝试为此使用strptime
,但我遇到了两个问题:
- 最后,我需要从时区部分删除
:
,以使%z
正常工作。 - 微秒部分有 7 位数字,但
strptime
最多只能处理 6 位数字。
有没有办法在传递给strptime
之前不修改*字符串本身的情况下解析这种格式的时间戳?
* - 通过修改,我想删除最后一个微秒数字,并删除最后一个:
.
注意:这是用于在MySQL中插入记录。如果有帮助的话。
像这样转换怎么样:
dt = datetime.strptime(s[:-len('2-04:00')], '%Y-%m-%dT%H:%M:%S.%f')
# datetime.datetime(2016, 9, 22, 13, 57, 31, 231189)
https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior
突然在 django 上找到了一个有用的方法:
from django.utils.dateparse import parse_datetime
dt = parse_datetime('2016-09-22T13:57:31.2311892-04:00')
# datetime.datetime(2016, 9, 22, 13, 57, 31, 231189, tzinfo=<django.utils.timezone.FixedOffset object at 0x7f20184f8390>)
https://docs.djangoproject.com/en/2.0/ref/utils/#module-django.utils.dateparse
另一种pythonic格式(使用
maya
https://github.com/kennethreitz/maya(:
# pip install maya
import maya
maya.parse('2016-09-22T13:57:31.2311892-04:00').datetime()
# datetime.datetime(2016, 9, 22, 17, 57, 31, 231189, tzinfo=<UTC>)