Django - 从datetime.strptime获取唯一日期

时间:2013-08-04 04:22:12

标签: python django datetime

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

我想要的是日期,没有时间。因为我收到“无效的日期格式错误”,说“它必须是YYYY-MM-DD格式”,所以我坚持这个并且感到沮丧。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:91)

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

from datetime import datetime
datetime.strptime('2014-12-04', '%Y-%m-%d').date()

答案 1 :(得分:1)

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