DateField&使用jQuery DatePicker&的TimeField格式化TimePicker

时间:2011-01-13 04:12:07

标签: jquery django django-forms datepicker datefield

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

 01/05/2011
 11:00 PM

表单不会提交,所以我认为与这些格式和DateField& TimeField我在我的表单类中使用。这是真的?如果是这样,这些输入需要采用什么格式?

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以通过查看Django源来阅读这些字段的验证代码。

查看django / forms / fields.py,阅读DateField和TimeField类上的to_python()方法。

在我看来,他们都支持多种输入类型:

  • 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'

因此,任何这些方式格式化的日期字符串都应该有效(假设你的语言环境没有设置为古怪的 - 每个语言环境都有针对该字段的语言环境特定覆盖,你应该检查语言环境的locale子目录'正在努力)。

TIME_INPUT_FORMATS的逻辑类似,默认情况下为:

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

所以我怀疑这是阻止你的表格工作的原因,因为你的时间是上午/下午。

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

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

答案 1 :(得分:0)

我只是使用

运行此设置
LANGUAGE_CODE = 'fr-FR'

在我的settings.py中 并使用jQueryUI的语言文件
this page具有jqueryUI语言文件的完整示例