好吧,这是一个在一百万的见解!
这些麻烦的原因是从设置DATETIME_INPUT_FORMATS
。
我有什么之前:
DATETIME_INPUT_FORMATS = (
'%d %B %Y', # '05 March 2014'
'%d %B %Y - %H:%M', # '05 March 2014 - 08:07'
'%d %B %Y - %H:%M:%S', # '05 March 2014 - 08:07:59'
'%d %B %Y - %H:%M:%S.%f', # '05 March 2014 - 08:07:59.0001'
'%d/%m/%Y %H:%M:%S.%f', # '25/10/05 14:30:59.000200'
'%d/%m/%Y %H:%M:%S', # '25/10/05 14:30:59'
'%d/%m/%Y %H:%M', # '25/10/05 14:30'
'%d/%m/%Y', # '25/10/05'
'%d-%m-%Y %H:%M:%S.%f', # '25-10-05 14:30:59.000200'
'%d-%m-%Y %H:%M:%S', # '25-10-05 14:30:59'
'%d-%m-%Y %H:%M', # '25-10-05 14:30'
'%d-%m-%Y', # '25-10-05'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30'
'%Y-%m-%d', # '2006-10-25'
'%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200'
'%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
'%m/%d/%Y %H:%M', # '10/25/2006 14:30'
'%m/%d/%Y', # '10/25/2006'
'%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
'%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
'%m/%d/%y %H:%M', # '10/25/06 14:30'
'%m/%d/%y', # '10/25/06'
)
什么固定的问题,我有:
DATETIME_INPUT_FORMATS = (
'%d %B %Y - %H:%M:%S.%f', # '05 March 2014 - 08:07:59.0001'
'%d %B %Y - %H:%M:%S', # '05 March 2014 - 08:07:59'
'%d %B %Y - %H:%M', # '05 March 2014 - 08:07'
'%d %B %Y', # '05 March 2014' <- this line was first before
'%d/%m/%Y %H:%M:%S.%f', # '25/10/05 14:30:59.000200'
'%d/%m/%Y %H:%M:%S', # '25/10/05 14:30:59'
'%d/%m/%Y %H:%M', # '25/10/05 14:30'
'%d/%m/%Y', # '25/10/05'
'%d-%m-%Y %H:%M:%S.%f', # '25-10-05 14:30:59.000200'
'%d-%m-%Y %H:%M:%S', # '25-10-05 14:30:59'
'%d-%m-%Y %H:%M', # '25-10-05 14:30'
'%d-%m-%Y', # '25-10-05'
'%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30'
'%Y-%m-%d', # '2006-10-25'
'%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200'
'%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
'%m/%d/%Y %H:%M', # '10/25/2006 14:30'
'%m/%d/%Y', # '10/25/2006'
'%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
'%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
'%m/%d/%y %H:%M', # '10/25/06 14:30'
'%m/%d/%y', # '10/25/06'
)
因此,洞察是:
当Django呈现在表格日期时间,它从读DATETIME_INPUT_FORMATS
并使用适合的第一种格式。因此,格式应该从具有最多细节的格式转到具有最少细节的格式。
在另一方面,当Django从客户端读取日期时间输入,它通过所有DATETIME_INPUT_FORMATS
,直到找到适合如果没有,日期时间将是无效的。