2011-01-13 83 views
0

我有一个窗体(2字段),用户选择/输入日期&使用jQuery的DatePicker的时间& TimePicker。该格式的说出来是:使用jQuery DateField&TimeField格式DatePicker&TimePicker

01/05/2011 
11:00 PM 

形式将不提交的,所以我觉得有这些格式的,我用我的窗体类的DateField & TimeField冲突。这是真的?如果是这样,这些输入需要什么格式?

谢谢!

+0

你使用jQuery UI的日期选择器或其他一些日期选择器插件一个jQueryUI的语言文件的完整的例子吗? – 2011-01-13 05:54:54

+0

你使用哪个TimePicker插件来使用jQueryUI?它似乎没有默认出现,并有几个选项。 – slacy 2011-01-13 05:55:29

回答

3

您可以通过查看Django的源读取这些字段的验证代码。在Django /形式/ fields.py

寻找,读取to_python()上的DateField和TimeField类的方法。

它看起来对我来说,他们都支持多个输入类型:根据

  • 一个datetime.datetime对象
  • 一个datetime.date对象
  • 格式化字符串的一个实例的实例到设置DATE_INPUT_FORMATS(或TIME_INPUT_FORMATS)

我认为最后的选择是你想要的。检查django/conf/global_settings.py,可以看到这些设置的默认值,其中包括大量的strptime格式字符串。这里的默认DATE_INPUT_FORMATS:

'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' 
'%b %d %Y', '%b %d, %Y',   # 'Oct 25 2006', 'Oct 25, 2006' 
'%d %b %Y', '%d %b, %Y',   # '25 Oct 2006', '25 Oct, 2006' 
'%B %d %Y', '%B %d, %Y',   # 'October 25 2006', 'October 25, 2006' 
'%d %B %Y', '%d %B, %Y',   # '25 October 2006', '25 October, 2006' 

所以,任何日期的格式字符串以下任一方式应该工作(假设你的语言环境未设置为古怪的东西 - 每个区域都有这个领域特定语言环境的覆盖,而你应检查您正在使用的语言环境的语言环境子目录)。

有用于TIME_INPUT_FORMATS在默认情况下是相似的逻辑:

'%H:%M:%S',  # '14:30:59' 
'%H:%M',  # '14:30' 

所以我怀疑这是什么原因导致您的形式从工作,因为你的时间具有AM/PM。

你可以在你的settings.py中手动设置TIME_INPUT_FORMATS为一个strptime格式的字符串,它可以用于你想要的,这可能类似于“%I:%M%p”(请注意,你不能使用%r因为它看起来像需要秒)。您可能还想包括原始值,只是为了与其他事物(如Django管理界面)可能的兼容性。

我不熟悉jQuery日期&时间选择器 - 也许你可以配置它们以Django支持的格式输出时间?

0

我有这样的设置运行良好,只是用

LANGUAGE_CODE = 'fr-FR' 
在我的设置

。PY 并使用jQueryUI的语言文件
this page