datetime jquery插件 - 格式化日期头痛

时间:2015-04-14 12:11:44

标签: javascript jquery asp.net-mvc

我有一个带属性的viewmodel

public DateTime StartTime { get; set; }

我想将jquery datetime plugin应用于该属性

问题是我不能强制jquery插件格式化日期格式

dd.mm.yy HH:mm:ss 

应代表

01.01.1999 00:00:00

如何在模型中修饰DateTime prooperty以匹配jquery插件中的这种格式?

更新: 我试过以下:

$(document).ready(function () {
            $('.dateTimePicker').datetimepicker({                           
               timeFormat: "HH:mm:ss",
               dateFormat: 'dd.mm.yy',
            });
});

和内部模型来装饰属性

[DisplayFormat(ApplyFormatInEditMode = false, DataFormatString = "{0:dd.MM.yyyy HH:mm:ss}")]

但问题仍然存在。

在启用的客户端验证中,我获得了The field XXXX must be a date.,并且当客户端验证被禁用时,我会使用默认值为0年的服务器端datetime属性(就像没有选择任何内容一样)。

1 个答案:

答案 0 :(得分:0)

您可以在评论中提到@StephenMuecke创建自己的验证方法。 我会建议采用不同的方法,并推荐 datejs 库,这位老兄做得很好,图书馆虽然很轻,但功能齐全,可以为您节省大量的时间。< / p>

回到你的问题: 你有JQuery日期时间格式的代码是正确的,你应该保留它,这将确保控件本身的格式是正确的:

$('#StartTime').datetimepicker({
    dateFormat: "dd.mm.yy",
    timeFormat:  "HH:mm:ss"  });

对于验证,您可以借助 datejs ParseExact()方法创建自己的验证例程。您的代码应如下所示:

jQuery.validator.addMethod("MyDateTimeFormat", function(value, element) { 
    return Date.parseExact(value, "dd.MM.yyyy HH:mm:ss");

},"Please provide  the correct date time format");

然后你应该将验证器绑定到页面中的控件,你的代码应该是这样的:

form.validate({
   rules : {
      StartTime : { MyDateTimeFormat: true }
   }
});

其中StartTimeTextBox的ID,而MyDateTimeFormat是我们自定义验证的名称。

这里有.net Fiddle的例子。