Я изо всех сил пытаюсь получить console.log двух дат, а также дней между этими двумя днями.

enter image description here

Это часть 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

Заранее спасибо!

1
user10930711 14 Июн 2020 в 18:20

1 ответ

Лучший ответ

В 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(), после чего вы можете использовать свою формулу в обычном режиме.

0
Karim 14 Июн 2020 в 16:21