I have a model with a DateTimeField:
deadline = models.DateTimeField(verbose_name="Valid unitl", null=True, blank=True)
Users should be allowed to input date, time and timezone info in the field. This is my desired format:
2012-12-31 23:30 +0430
I expect the time will get converted to UTC before storing to db. So I tried using a model form for that, but it throws Enter a valid date/time.
validation error on that DateTimeField if I enter the value above.
This is in settings.py:
DATE_INPUT_FORMATS = ('%Y-%m-%d %H:%M %Z', )
What am I missing?
Edit:
As per Видул Петров's suggestion, tried to use a form field:
deadline2 = forms.DateTimeField(input_formats=['%Y-%m-%d %H:%M %Z',],
Got the same effect: Enter a valid date/time.
Edit 2
It appears that datetime can't handle the "%z" parameter. This throws a ValueError:
datetime.datetime.strptime(value, format)
So I tested it in console:
>>> import datetime
>>> datetime.datetime.strptime('2012-12-30 19:00 +0100', "%Y-%m-%d %H:%M %z")
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 317, in _strptime
(bad_directive, format))
ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M %z'
Also tried pytz:
>>> import pytz
>>> pytz.datetime.datetime.strptime('2012-12-30 19:00 +0100', "%Y-%m-%d %H:%M %z")
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 317, in _strptime
(bad_directive, format))
ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M %z'
I really feel this should work. Did I miss some part of the docs that says otherwise?