我想在Django模型类中存储一些数据。我需要存储的日期的格式为mm / dd / yy,但是django日期字段的默认格式为yyyy-mm-dd,因此我得到了django.core.exceptions.ValidationError这个错误:[“ '10 / 05/1997 'value的日期格式无效。它必须为YYYY-MM-DD格式。“] 。我该如何解决这个问题?我没有使用任何表单,所以无法使用Forms.datefield及其日期字段而不是datetimefield
答案 0 :(得分:0)
您可以使用Python标准库中的datetime模块在不同的日期格式之间进行转换。
datetime.datetime.strptime
创建一个datetime.datetime
对象,给定字符串和格式; datetime.datetime.strftime
返回给定日期时间和格式的字符串。
在您的情况下,您可以将显示格式定义为“ mm / dd / yyy”和“ yyyy-mm-dd”作为存储格式,并生成用于存储的日期字符串,如下所示:
>>> import datetime
>>> display_format = '%m/%d/%Y'
>>> db_format = '%Y-%m-%d'
>>> date = '10/05/1997'
>>> db_date = datetime.datetime.strptime(date, display_format).strftime(db_format)
>>> print(db_date)
1997-10-05
从存储格式到显示格式的转换类似:
>>> display_date = datetime.datetime.strptime(db_date, db_format).strftime(display_format)
>>> print(display_date)
10/05/1997
或者,您可以split将该字符串分成几部分,然后join以所需的顺序将其与所需的分隔符一起放回原处:
>> date = '10/05/1997'
>>> month, day, year = date.split('/')
>>> month, day, year
('10', '05', '1997')
>>>
>>> db_date = '-'.join((year, month, day))
>>> print(db_date)
1997-10-05
要从存储格式转换为显示格式:
>>> year, month, day = db_date.split('-')
>>> display_date = '/'.join((month, day, year))
>>> print(display_date)
10/05/1997