0

我正在使用 asp.net MVCTextBoxFor来绑定 bootstrap-datetimepicker。它适用于简单的输入类型文本框。

但是当我将它与 mvc 文本框助手绑定时,它显示错误的年份'31/10/1899 00:00'

然后我在某个地方找到了解决方案来解决这个问题。

$('.datetimepicker').datetimepicker({
    format: "dd-mm-yyyy hh:ii:00P",
    autoclose: true
});

它工作正常,但现在它在最后添加经络,如 AM/PM。我需要删除那些 AM/PM。 在此处输入图像描述

任何帮助,将不胜感激。

4

3 回答 3

2

只需删除 foramt 变量末尾的 P ,请参见下文

format: "dd-mm-yyyy hh:ii:00",
于 2017-10-25T11:52:05.930 回答
0

正如前两个答案所说,要删除经络,您可以将两者结合format使用showMeridian

$('.datetimepicker').datetimepicker({ 
    format: "dd-mm-yyyy hh:ii:00",
    autoclose: true,
    showMeridian: false
});

但是,当 datepicker 在没有选择任何内容或进行不完整选择的情况下失去焦点时会出现故障,它将日期恢复到 1899 年 12 月 31 日(在此示例 fiddle中重现)。我设法检查bootstrap-datetimepicker.js文件并找到parseDate导致此行为的函数:

parseDate: function (date, format, language, type, timezone) {
    var parts = date && date.toString().match(this.nonpunctuation) || [],
        // this line below represents December 31, 1899 (try using console.log)
        date = new Date(0, 0, 0, 0, 0, 0, 0), 
        // -- skipped for brevity --
    val, filtered, part;
    // -- skipped for brevity --
}

通过将date分配更改为当前日期可以进行一些调整:

parseDate: function (date, format, language, type, timezone) {
    var parts = date && date.toString().match(this.nonpunctuation) || [],
        date = new Date(),
        // -- skipped for brevity --
    val, filtered, part;
    // -- skipped for brevity --
}

注意:此调整仅适用于非 CDN 脚本(通过 NuGet 包安装或手动放置在Scripts文件夹中)。

相关问题:

问题 #494:当焦点丢失而不选择日期时,日期设置为“1899 年 12 月 31 日 00:00”

问题 #153

于 2017-10-26T02:01:01.023 回答
0

尝试这个:

$('.datetimepicker').datetimepicker({
            autoclose: true,
            showMeridian:false
        });
于 2017-10-25T12:10:39.960 回答