Итак, у меня есть datepicker, и я пытаюсь получить время выбранной даты, но кажется, что он работает, только если выбранная дата меньше 12-го числа месяца. Если вы выбираете что-то более 12-го, время не возвращается, кто-нибудь знает, почему?

$('.date-selected').datepicker({
 dateFormat: 'dd/mm/yy',
 
onSelect: function(date) {

var cDate = new Date($('.date-selected').val()).getTime();
$(".test-time").text(cDate);

}
});
<link href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<input class="date-selected" value="29/10/2019">
<div class="test-time"></div>
0
brandbei37 29 Окт 2019 в 17:13
2
Подсказка: месяцы в объекте JavaScript Date начинаются с 0 и заканчиваются 11
 – 
Andreas
29 Окт 2019 в 17:17
Хотя это необходимо учитывать при передаче месяца в качестве отдельного параметра, проблема в том, что Date() искал мм / дд / гг, пока он предоставлял дд / мм / гг ... поэтому он подумал, что дни были месяцы. Вы можете передать, например, "22.11.2019", и он будет знать, что вы имеете в виду ноябрь ... Это просто, когда вы передаете в качестве отдельных параметров, вам нужно беспокоиться о базе 0 для месяца. IE ("11/22/2019") = 22 ноября 2019 г., а (2019, 11, 22) = 22 декабря 2019 г.
 – 
Smern
29 Окт 2019 в 17:49

2 ответа

Если вы хотите использовать свой формат с указанием дней вначале, вам придется преобразовать его во что-то, что Date() поймет. Безопасная ставка - это просто указать год, месяц, день как отдельные параметры. Вам также придется вычесть 1 из месяца, поскольку месяцы начинаются с 0 при использовании параметров таким образом.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

$('.date-selected').datepicker({
  dateFormat: 'dd/mm/yy',
 
  onSelect: function(date) {
    var dateParts = $('.date-selected').val().split('/');
    var cDate = new Date(dateParts[2],dateParts[1]-1,dateParts[0]).getTime();
    $(".test-time").text(cDate + ' = ' + new Date(cDate));
  }
});
<link href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<input class="date-selected" value="29/10/2019">
<div class="test-time"></div>
1
Smern 29 Окт 2019 в 17:52

Похоже, у вас был неправильный формат даты, попробуйте mm/dd/yy

$('.date-selected').datepicker({
 dateFormat: 'mm/dd/yy',
 
onSelect: function(date) {

var cDate = new Date($('.date-selected').val()).getTime();
$(".test-time").text(cDate);

}
});
<link href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<input class="date-selected" value="29/10/2019">
<div class="test-time"></div>
1
stackoverfloweth 29 Окт 2019 в 17:16
Вы можете сохранить объект даты в переменной и отформатировать его после того, как вы вытащите время
 – 
stackoverfloweth
29 Окт 2019 в 17:25