JavaScript console.log 的日期选择器和计算两个日期之间的差异不起作用

JavaScript console.log of datepicker and counting difference between two dates doesn't work

我正在努力获取两个日期的 console.log 以及这两天之间的天数。

这是 JavaScript 部分:

var startDate;
var endDate;

$(document).ready(function() {
    var j = jQuery.noConflict();
    startDate = j("#startTime").datepicker({
        dateFormat: 'dd.mm.yy',
        onSelect: function() {
            console.log("Test1");
        }
    });

    endDate = j("#endTime").datepicker({
        dateFormat: 'dd.mm.yy',
        onSelect: function() {
            console.log("Test2");
        }
    });
});


function createSpots(){
    var siteUrl = '/sites/MySiteCollection';

    const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
    const diffDays = Math.round(Math.abs((startDate - endDate) / oneDay));

    console.log("diffDays: " + diffDays);
    console.log("startDate: " + startDate);
    console.log("endDate: " + endDate.dateFormat);
    console.log("Spots created!");
}

这是HTML:

<script src="/tools/Scripts/apps/Win10Rollout/AutomatedSpots.js" type="text/javascript"></script>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"/>

<p>Startdatum:<input id="startTime" type="text" class="hasDatepicker"/></p>
<p>Enddatum:<input id="endTime" type="text" class="hasDatepicker"/></p> 
<p>Spots: 
   <textarea id="text" name="text" cols="35" rows="4"></textarea> </p> 
<p>Anzahl Einträge je Spot:<input type="number" id="spot"/></p> 
<button onclick="createSpots()" type="button" id="button">Erstellen</button>

控制台显示 startDate: [object Object]。 当我使用 startDate.getDate() 时,它显示 Uncaught TypeError: startDate.getDate is not a function。使用 startDate.dateFormat 也不起作用。

计算我使用的那些日期之间的差异

const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
const diffDays = Math.round(Math.abs((startDate - endDate) / oneDay));

但是这里说的是diffDays: NaN

提前致谢!

在 javascript 中,为了能够对对象使用 console.log() 并从该对象中获取详细信息,您可以避免将对象连接到字符串,以便可以使用

console.log("startDate: ", startDate); 而不是使用 console.log("startDate: " + startDate);

或者你可以使用JSON.stringify对对象进行字符串化,这样就变成了:

console.log("startDate: " + JSON.stringify(startDate));

但是 startDate 变量在你的情况下,这是一个 JQuery 对象所以如果你要记录它,它会记录 html 对象所以在你的情况下记录startDate 对象中的值,您可以使用以下内容:

console.log("startDate: " , startDate[0].value);

关于日期差异的计算,您可以执行以下操作:

  function createSpots(){
        var siteUrl = '/sites/MySiteCollection';
        const startDateValue = new Date(startDate[0].value);
        const endDateValue = new Date(endDate[0].value);
        const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds

        const diffDays = Math.round(Math.abs((startDateValue - endDateValue) / oneDay));

        console.log("diffDays: " + diffDays);
        console.log("startDate: " , startDateValue);

        console.log("endDate: " + endDateValue);
        console.log("Spots created!");
    }

简单地说,您需要获取用户输入的值,然后使用 new Date() 将这些值转换为日期对象,然后您就可以正常使用您的公式了。