如何验证 Kendo 中的 dd/MM/yyyy 日期格式?

How to validate dd/MM/yyyy Date Format in Kendo?

我使用以下代码以 MVC 形式询问用户开始日期和结束日期

 @using (Html.BeginForm("InfoEdit", "Info", FormMethod.Post, new { id = "Form" }))
{
    <table>
        <tr>
            <td>Start DateTime</td>
            <td>
                @(Html.Kendo().DateTimePickerFor(model => model.StartDateTime).Name("StartDateTime").Format("dd/MM/yyyy HH:mm tt").ParseFormats(new string[] { "dd/MM/yyyy" }).HtmlAttributes(new { style = "width:300px;", onkeydown="javascript:return false;" }))
            </td>
        </tr>
        <tr>
            <td>Expiration DateTime</td>
            <td>
                @(Html.Kendo().DateTimePickerFor(model => model.ExpirationDateTime).Name("ExpirationDateTime").Format("dd/MM/yyyy HH:mm tt").ParseFormats(new string[] { "dd/MM/yyyy" }).HtmlAttributes(new { style = "width:300px;", onkeydown="javascript:return false;" }))
            </td>
        </tr>
    </table>
}

javascript代码如下:

$(document).ready(function () {
    function onChange() {
        var StartDateTime = $("#StartDateTime").val().split(" ");
        var date = StartDateTime[0].split("/");
        var time = StartDateTime[1].split(":");
        var dd = date[0];
        var MM = date[1];
        var yyyy = date[2];
        var HH = time[0];
        var min = time[1];
        var tt = StartDateTime[2];
        StartDateTime = new Date(yyyy,MM-1,dd,HH,min);
        var ExpirationDateTime = new Date(StartDateTime.setHours(StartDateTime.getHours() + 1))
        $("#ExpirationDateTime").data("kendoDateTimePicker").value(ExpirationDateTime);    
    }

    $("#StartDateTime").kendoDateTimePicker({
        change: onChange,
        format: "dd/MM/yyyy HH:mm tt",
        parseFormats: ["dd/MM/yyyy"]
    });
}

我有以下值的模型:

[Required(ErrorMessage = "Start Datetime is required.")]
[DataType(DataType.DateTime)]
public DateTime StartDateTime { get; set; }

[Required(ErrorMessage = "Expiration Datetime is required.")]
[DataType(DataType.DateTime)]
public DateTime ExpirationDateTime { get; set; }

但是当我提交表单时,出现如下错误:

The value '16/11/2021 11:10 AM' is not valid for StartDateTime.
The value '16/11/2021 12:10 PM' is not valid for ExpirationDateTime.

它适用于默认格式,即 MM/dd/yyyy,但我希望它适用于 dd/MM/yyyy。 我尝试使用 kendoValidator 但它对我不起作用或者我可能没有使用它 correctly.What 我可以传递 dd/MM/yyyy 日期格式吗?

此外,需要注意的一件事是,如果日期的 dd 部分小于或等于 12,则日期无误地通过。

您正在使用剃刀语法应用格式,这可能是您收到错误的原因。我试过下面的代码,这对我有用。即使这样也适用于编辑模式。

Razor 语法
@Html.TextBoxFor(m=>m.StartDateTime)

JavaScript 语法

$(文档).ready(函数(){ $("#StartDateTime").kendoDatePicker({ 格式:“dd/MM/yyyy HH:mm tt”, }); });

由于en-US是默认文化,我们需要将文化设置为en-GB。 为此:

<script src="https://kendo.cdn.telerik.com/2021.3.1109/js/cultures/kendo.culture.en-GB.min.js"></script>

$(document).ready(function () {
    //set the culture
    kendo.culture("en-GB");
    function onChange() {
        // code goes here
    }
}

并通过添加

修改Web.Config文件
<system.web>
    <globalization uiCulture="en-GB" culture="en-GB"></globalization>
</system.web>