如何让 Kendo UI MVC 日期时间选择器在 URL/form 中明确地格式化日期?

How can I get the Kendo UI MVC datetimepicker to format the date unambiguously in the URL/form?

我正在尝试使用 Kendo UI MVC dateTimePicker 明确地格式化日期,以便 MVC 模型绑定能够理解它。我在通过 GET 请求提交的表单中有一个 datetimepicker 控件。

MVC 需要这种格式的日期:yyyy-MM-dd 但我想在页面上显示日期为 dd/MM/yyyy

如果我使用此代码,MVC 会正确解析日期,但首先向用户显示年份,这不是我想要的:

    @(Html.Kendo().DateTimePicker()
          .Name("ToDate")
          .Format("yyyy-MM-dd")
    )

是否有解决方法,以便我可以在框中为人类格式化日期,但在 URL 中以明确(不变)的格式格式化它?

您应该将 DateTimePicker 格式配置为用户友好的格式。然后使用 javascript 从小部件中获取日期对象(不是字符串日期)。然后将此日期对象格式化为 'yyyy-mm-dd' 并发出请求。

所以您的小部件应该是:

@(Html.Kendo().DateTimePicker()
      .Name("ToDate")
      .Format("dd/MM/yyyy")
)

然后使用这个 javascript 发出请求:

var date = $("#ToDate").data("kendoDateTimePicker").value();

日期变量有一个 javascript 您可以格式化的日期:

function dateToString(date){
    var str = date.getFullYear() + "-";
    str += ('0' + (date.getMonth() + 1)).slice(-2) + "-";
    str += ('0' + date.getDate()).slice(-2) + "T";
    str += ('0' + date.getHours()).slice(-2) + "-";
    str += ('0' + date.getMinutes()).slice(-2) + "-";
    str += ('0' + date.getSeconds()).slice(-2);
    return str;
}

此格式为"yyyy-mm-dd hh:mm:ss",但如果需要,您可以删除时间部分