Format for DateTimeField
Possible Duplicate:
Converting string into datetime
在Django中,我得到这个错误"以YYYY-MM-DD hh:mm[:ss[.uuuuuuuu]]格式输入有效的日期/时间"。当我试图将字符串"22-dec-2009"分配给模型中的日期时间字段时。
如何使datetimefield接受格式为"2009年12月22日"的日期字符串?
您可以将输入格式作为input_formats参数传递给DateTimeField,这样您就可以这样做了。
1 2 3 4 5 6
| # you can keep a list of formats yourself, or copy from django 1.2 version e.g.
# my_formats = fields.DEFAULT_DATETIME_INPUT_FORMATS + ['%d-%b-%Y']
# for latest django use this
from django.utils.formats import get_format
my_formats = get_format('DATETIME_INPUT_FORMATS')
field = DateTimeField(input_formats=my_formats,...) |
如果您直接想将日期str分配给models.DateTimeField,最好的方法是在手工前将其转换为datetime。
1
| mymodel.date_of_birth = datetime.datetime.strptime("22-DEC-2009","%d-%b-%Y") |
- 不接受models.datetimefield的参数输入格式。
- @维沙尔,它说什么?您使用的是什么版本?
- @Anurag错误:"/django/db/models/fields/uu init_uuy",init field中的第459行。uuu init_uuuu(self,verbose_name,name,**kwargs)typeerror:uu init_uuu()得到一个意外的关键字参数"input_formats",django version:"1.1.1"/django/db/models/fields不包含默认的日期时间输入格式,但/django/forms/fields.py不包含代码运行)有用的帖子:stackoverflow.com/questions/466345/…
- 是的,form.fields没有db
- Django 1.4不支持输入格式
- @在这种情况下,Hobs从旧版本复制格式或使用新方法(编辑的答案)
- @Anurag,感谢您为1.4提供有效的formats导入,但是input_formats参数不支持django 1.4日期时间字段。
- @流浪汉你说的不受支持是什么意思?In [2]: from django.forms.fields import DateTimeField In [3]: DateTimeField(input_formats=[]) Out[3]: In [4]: import django In [5]: django.VERSION Out[5]: (1, 4, 0, 'final', 0)
- @阿努拉格,欧普问的是关于一个models.DateTimeField,而不是forms.DateTimeField。In [1]: from django.db.models import DateTimeFieldIn [2]: DateTimeField(input_formats=[])TypeError: __init__() got an unexpected keyword argument 'input_formats'号
- @已经知道的hobs,见我的12月9日评论,为ui表单。datetimefield是足够的,如果op想要直接分配给模型,他可以很容易地转换日期str(见编辑)
- @阿努拉格,是的,我想我错过了。