Проверьте, не выбрал ли pickadate. js datepicker сегодня? - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь проверить, выбрал ли этот сборщик дат (pickadate. js) текущий день на съемочной площадке. Вот мой код:

var today = new Date();

var tomorrow = new Date();

tomorrow.setDate(today.getDate() + 1);

var nextyear = new Date();

nextyear.setFullYear(nextyear.getFullYear() + 1);

var pickupdatepicker = $("#car-rental-pickup-date").pickadate({
	editable: true,
    format: "mm/dd/yyyy",
    min: today,
    max: nextyear,
    today: "",
    close: "",
    clear: "",
    onSet: function(context) {
    
        var d = new Date(context.select);

        dnotime = new Date(d.toDateString());
        todaynotime =  new Date(today.toDateString());

        var currenthour = new Date().getHours();
        var hourp3 = currenthour + 13;

        console.log (dnotime);
        console.log (todaynotime);

        if (dnotime == todaynotime) {

            time.set({
                disable: [
                { from: [0,0], to: [hourp3,00] }
                ]
            });

            console.log ("today!");

        }else{

            console.log ("not today!");

        }
        
    }
});
<link rel="stylesheet" href="https://amsul.ca/pickadate.js/vendor/pickadate/lib/themes/default.date.css" id="theme_date">


<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://amsul.ca/pickadate.js/vendor/pickadate/lib/picker.js"></script>
<script src="https://amsul.ca/pickadate.js/vendor/pickadate/lib/picker.date.js"></script>
<input type="date" name="car-rental-pickup-date" id="car-rental-pickup-date" class="form-control tleft readonly" value="" placeholder="Select Pickup Date" required>

Но оператор if, сравнивающий две даты, не работает, но консоль говорит, что они идентичны. Что дает? Может кто-нибудь проверить это и сказать мне, что я делаю не так?

1 Ответ

1 голос
/ 02 марта 2020

В вашем коде:

if (dnotime == todaynotime) {

сравнивает два объекта Date, поэтому всегда ложно. Сначала введите число:

if (+dnotime == +todaynotime) {

Однако вы можете упростить его, поскольку context.select возвращает значение времени для локального начала выбранной даты, поэтому вы можете сделать:

if (context.select == new Date().setHours(0,0,0,0))

и упростим предыдущий код. Вот оригинальный код, модифицированный для работы:

var today = new Date();
// Set to start of day
today.setHours(0,0,0,0);
// Copy today as root for tomorrow
var tomorrow = new Date(today);
tomorrow.setDate(today.getDate() + 1);
// And for next year
var nextyear = new Date(today);
nextyear.setFullYear(nextyear.getFullYear() + 1);

var pickupdatepicker = $("#car-rental-pickup-date").pickadate({
	editable: true,
    format: "mm/dd/yyyy",
    min: today,
    max: nextyear,
    today: "",
    close: "",
    clear: "",
    onSet: function(context) {
    
        // Could keep value as number, but OK as Date too
        var d = new Date(context.select);

        // This is unnecessary
        // dnotime = new Date(d.toDateString());
        // todaynotime =  new Date(today.toDateString());

        // Not relevant to issue
        // var currenthour = new Date().getHours();
        // var hourp3 = currenthour + 13;

        // Compare time values
        // Could also do: if (+d == + today) {...}
        if (d.getTime() == today.getTime()) {
        /* Not relevant
            time.set({
                disable: [
                { from: [0,0], to: [hourp3,00] }
                ]
            });
        */
            console.log ("today!");

        } else {
            console.log ("not today!");
        }
    }
});
<link rel="stylesheet" href="https://amsul.ca/pickadate.js/vendor/pickadate/lib/themes/default.date.css" id="theme_date">


<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://amsul.ca/pickadate.js/vendor/pickadate/lib/picker.js"></script>
<script src="https://amsul.ca/pickadate.js/vendor/pickadate/lib/picker.date.js"></script>
<input type="date" name="car-rental-pickup-date" id="car-rental-pickup-date" class="form-control tleft readonly" value="" placeholder="Select Pickup Date" required>
...