Я изо всех сил пытаюсь получить 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
Заранее спасибо!
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()
, после чего вы можете использовать свою формулу в обычном режиме.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.