Показать сообщение отдельно
  #6 (permalink)  
Старый 05.04.2019, 14:32
Интересующийся
Отправить личное сообщение для seotapki Посмотреть профиль Найти все сообщения от seotapki
 
Регистрация: 27.08.2016
Сообщений: 28

Сообщение от рони Посмотреть сообщение
seotapki,
onSelect: function(date){ 
var selectDate = new Date(date);
*!*
selectDate.setTimezoneOffset(-180);//-180 Timezone "из нужного часового пояса" 
*/!*


Рони, подскажите пожалуйста по преобразованию даты(проблемы)


У меня есть следующее условие:
Оформить доставку на сегодня можно в период времени с 10:00 до 18:00 (если доставка день в день). Если вы делаете заказ сегодня, но оформляете доставку на следующий день, то время можете выбрать любое в период с 10:00 до 21:00.



Я написал такой код:


onSelect: function(date){

                    var selectDate = new Date(date); // Выбранная дата в календаре, формата: 19.04.2019 17:08
                    var sdDay = selectDate.getDate(); // Получаем выбранный день недели(число)
                    var sdHours = selectDate.getHours(); // Получаем выбранное время (часы)


                    var fromDate = new Date('<?php echo (string)$date; ?> 10:00'); // php возвращает сегодняшнюю дату 05.04.2019, получается строка вида 05.04.2019 10:00
                    var fdDay = fromDate.getDate(); // Получаем сегодняшний день недели(число)
                    var fdHours = fromDate.getHours(); // Получаем время (часы) 10:00


                    var toDate = new Date('<?php echo (string)$date; ?> 18:00'); // php возвращает сегодняшнюю дату 05.04.2019, получается строка вида 05.04.2019 18:00
                    var tdDay = toDate.getDate(); // Получаем сегодняшний день недели(число)
                    var tdHours = toDate.getHours(); // Получаем время (часы) 18:00


                    if (sdDay <= fdDay  && sdHours <= fdHours) { // Если выбранное число(день) в календаре <= текущей даты и выбранное время в календаре меньше 10 часов утра, то скрываем возможность выбрать способы доставки 
                        console.log('Скрыть доставку');

                    } else if(sdDay <= fdDay  && sdHours >= tdHours) { // Если выбранное число(день) в календаре <= текущей даты и выбранное время в календаре больше 18 часов вечера, то скрываем возможность выбрать способы доставки 
                        console.log('Скрыть доставку');

                    } else { // В остальных случаях показываем способы доставки
                        console.log('Показать доставку');
                    }


                }




С одной стороны логика вроде правильна, но судя по всему проблемы с преобразованием дат, потому что в консоли при выборе определенных дней, появляются такие штуки:

http://prntscr.com/n7vqrs

Что я делаю не так?
Ответить с цитированием