首页 文章

使用jQuery DatePicker和TimePicker进行DateField和TimeField格式化

提问于
浏览
0

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

01/05/2011
 11:00 PM

表单将不会提交,因此我认为与我在表单类中使用的格式和DateField和TimeField存在冲突 . 这是真的?如果是这样,这些输入需要采用什么格式?

谢谢!

2 回答

  • 0

    您可以通过查看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'
    

    因此,任何这些方式格式化的任何日期字符串都应该有效(假设您的语言环境未设置为古怪的 - 每个语言环境都具有此字段的特定于语言环境的覆盖,您应该检查您正在使用的语言环境的语言环境子目录用) .

    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已经支持的格式输出时间?

  • 3

    我只是使用这个设置正常运行

    LANGUAGE_CODE = 'fr-FR'
    

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

相关问题