60

我在数据库中有开始日期字段作为日期(不是日期时间)。在 forms.py 中的保存方法中,我datetime.strptime(date_string, '%Y-%m-%d')用于将字符串转换为日期。该方法返回我格式化的日期和时间,即“2006-08-03 00:00:00”。

我只想要日期而不想要时间。因为我收到一个“无效的日期格式错误”说“它必须是 YYYY-MM-DD 格式”,所以我对此感到沮丧。谁能帮我解决这个问题?

4

2 回答 2

136

我认为您需要日期对象而不是日期时间。尝试使用 datetime 对象上的 date() 方法将日期时间转换为日期

from datetime import datetime
datetime.strptime('2014-12-04', '%Y-%m-%d').date()
于 2013-08-04T04:31:35.103 回答
2

Iazy functor 的回答非常有帮助。对于想要将其用作模板标签的人:

from django import template
from datetime import datetime

register = template.Library()

@register.filter(name='todate')
def convert_str_date(value):
    return datetime.strptime(value, '%Y-%m-%d').date()

然后在您的 HTML 中导入您的 template.py 并将其用作:

{{ date_in_str|todate }}

Output: 2021.01.22

如果要更改日期格式:

{{ date_in_str|todate|date:"d N Y" }}

Output: 22 Jan. 2021
于 2021-01-22T14:48:25.410 回答