Django时间转换格式

时间:2017-05-21 14:26:25

标签: django python-3.x

我正在尝试使用以下代码将时间转换为特定格式:

datetime.datetime.strptime(timezone.now() + timedelta(days=14), '%Y-%m-%dT%H:%M:%S.%f%z')

我收到的错误是第一个参数必须是字符串。

我也尝试过使用此代码

datetime.datetime.strptime(str(timezone.now() + timedelta(days=14)), '%Y-%m-%dT%H:%M:%S.%f%z')

但后来我遇到了以下错误:

time data '2017-06-04 14:26:18.941458+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'

有人可以建议我如何转换为特定格式。谢谢!

2 个答案:

答案 0 :(得分:1)

Django有一个内置日期解析器,它抽象出strftime远离parse_datetime的逻辑。您只需传入一个日期字符串,它就会返回一个datetime.datetime对象。以下是您的代码的样子:

from django.utils.dateparse import parse_datetime
parse_datetime(str(timezone.now() + timedelta(days=14)))
>>> datetime.datetime(2017, 6, 4, 7, 45, 28, 301957)

答案 1 :(得分:1)

如果您尝试将datetime.datetime()对象转换为字符串,则可以执行此操作,

>>> datetime.datetime.strftime(timezone.now() + timedelta(days=14), '%Y-%m-%dT%H:%M:%S.%f%z')
'2017-06-04T14:45:23.621658+0000'

或者如果您想将它作为日期时间对象,

>>> datetime.datetime.strptime(str(timezone.now() + timedelta(days=14))[:26], '%Y-%m-%d %H:%M:%S.%f')
datetime.datetime(2017, 6, 4, 14, 50, 26, 5649)