首页 > 解决方案 > 为什么发生 JavaScript 运行时错误:对象不支持属性或方法“getTime”?(getTime 不是函数)

问题描述

以下代码是 MVC C# cshtml 文档。

@{
    Layout = null;
    ViewBag.Title = "Test";
}
<script src="~/Scripts/jquery-1.11.1.min.js"></script>
<script src="~/Scripts/bootstrap-datepicker.js"></script>
<script>
    $(document).ready(init);
    function init() {

        //loadData();
        var today = new Date();
        var dd = today.getDate();
        var mm = today.getMonth() + 1; //January is 0!
        var yyyy = today.getFullYear();
        if (dd < 10) {
            dd = '0' + dd;
        }
        if (mm < 10) {
            mm = '0' + mm;
        }
        var mdate1 = yyyy + '/' + mm + '/01';
        var mdate2 = yyyy + '/' + mm + '/' + dd;

        $('#TSDATE').datepicker({
            startDate: -Infinity,
            endDate: "today",
            format: "yyyy/mm/dd",
            autoclose: true,
            todayHighlight: true,
            language: 'zh-TW'
        }).datepicker("setDate", mdate1);
        $("#TSDATE").bind("change", function () {
            var TSDATE = $("#TSDATE").val().replace(/\//g, '');
            var TEDATE = $("#TEDATE").val().replace(/\//g, '');
            if (TEDATE == '') {
                $('#TEDATE').val($('#TSDATE').val());
            } else {
                if (TSDATE >= TEDATE) {
                    $('#TEDATE').val($('#TSDATE').val());
                }
            }
        });
        $('#TEDATE').datepicker({
            startDate: -Infinity,
            endDate: "today",
            format: "yyyy/mm/dd",
            autoclose: true,
            //startDate: "today",
            //clearBtn: true,
            //calendarWeeks: true,
            todayHighlight: true,
            language: 'zh-TW'
        }).datepicker("setDate", mdate2);
        $("#TEDATE").bind("change", function () {
            var TSDATE = $("#TSDATE").val().replace(/\//g, '');
            var TEDATE = $("#TEDATE").val().replace(/\//g, '');
            if (TSDATE == '') {
                $('#TSDATE').val($('#TEDATE').val());
            } else {
                if (TEDATE <= TSDATE) {
                    $('#TSDATE').val($('#TEDATE').val());
                }
            }
        });
    }
</script>
<h2>Test</h2>
<div class="input-group input-daterange">
    <input type="text" class="form-control" id="TSDATE">
    <div class="input-group-addon">~&lt;/div>
    <input type="text" class="form-control" id="TEDATE">
</div>
<script src="~/Scripts/bootstrap.min.js"></script>

当我运行代码时,第一个文本框(#TSDATE)的日期选择器出现但未能写入“yyyy + '/' + mm + '/01'”。第二个文本框(#TEDATE)完全失败,没有显示datepicker.The iexplore 出现错误并显示消息“对象不支持属性或方法'getTime'”。位置在 bootstrap-datepicker.js 中:

setDate: function(d) {
            this.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset()*60000)));
        },

所以cshtml中的代码可能会在这里失败:

  }).datepicker("setDate", mdate1);

Chrome 还会弹出“'getTime 不是函数”。我在网上对同一个问题做了一些研究,问题的关键可能是我使用的.js或我写的javascript。但我找不到错误的解决方案。我该如何解决?

标签: javascriptc#jquerybootstrap-4gettime

解决方案


在您的代码中,

}).datepicker("setDate", mdate1);

mdate1 不是日期,它是字符串。

getTime() 是日期对象而不是字符串的函数。这就是您收到错误“getTime 不是函数”的原因。


推荐阅读