Задать вопрос
drno-reg
@drno-reg
см не кратко

Как решить проблему с датой для datepicker при чтении параметра из URL?

использую datapicker

<script type="text/javascript">
    // Первоначальное формирование документа
    $(document).ready(function()
    {
        $.datepicker.regional['ru'] = {
            closeText: 'Закрыть',
            prevText: '<Пред',
            nextText: 'След>',
            currentText: 'Сегодня',
            monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
            monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек'],
            dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
            dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
            dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
            weekHeader: 'Не',
            dateFormat: 'dd.mm.yy',
            firstDay: 1,
            isRTL: false,
            showMonthAfterYear: false,
            yearSuffix: ''
        };
        $.datepicker.setDefaults($.datepicker.regional['ru']);

        $.timepicker.regional['ru'] = {
            timeOnlyTitle: 'Выберите время',
            timeText: 'Время',
            hourText: 'Часы',
            minuteText: 'Минуты',
            secondText: 'Секунды',
            millisecText: 'Миллисекунды',
            microsecText: 'Микросекунды',
            timezoneText: 'Часовой пояс',
            currentText: 'Сейчас',
            closeText: 'Готово',
            timeFormat: 'HH:mm',
            amNames: ['AM', 'A'],
            pmNames: ['PM', 'P'],
            isRTL: false
        };
        $.timepicker.setDefaults($.timepicker.regional['ru']);
        // считыванием даты с и по
        var fdatetime;
        var tdatetime;
// если первый раз перешли и параметров URL еще нет
        if (getUrlParameter("DATETIME_FROM")==="" || getUrlParameter("DATETIME_TO")===""){
            fdatetime = new Date();
            fdatetime.addHours(-2);
            tdatetime = new Date();
        }
        else
        {
            fdatetime = Date.parse(getUrlParameter("DATETIME_FROM"));
            tdatetime = Date.parse(getUrlParameter("DATETIME_TO"));
        }
        $('#datetime_from').datetimepicker(
            {
                maxDate: tdatetime,
                format: 'yyyy-MM-dd hh:mm',
                onSelect: function(selected,evnt) {
                    updateDateTime_from(selected);
                }
            }
        ).datetimepicker("setDate", fdatetime);

        $('#datetime_to').datetimepicker(
            {
                minDate: fdatetime,
                onSelect: function(selected,evnt) {
                    updateDateTime_to(selected);
                }
            }
        ).datetimepicker("setDate", tdatetime);

    });
</script>


есть URL в котором параметры DATETIME_FROM и DATETIME_TO

DATETIME_FROM=06.09.2017%2016:16&DATETIME_TO=06.09.2017%2017:16


читаю параметр DATETIME_FROM :: 06.09.2017 16:16
при парсинге его в дату получается Fri Jun 09 2017 16:16:00 GMT+0300 (Russia TZ 2 Standard Time), т.е. 9 июня.

Как решить эту проблему?
  • Вопрос задан
  • 202 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Как решить эту проблему?

А что за проблема-то? День и месяц перепутаны - должно быть 6 сентября? Используйте moment.js. Можно задавать произвольный формат:

moment('06.09.2017 16:16', 'DD-MM-YYYY HH:mm')

Ну или вручную меняйте их местами, например:

new Date('06.09.2017 16:16'.replace(/(\d+)\.(\d+)\.(\d+)/, '$3-$2-$1'))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
drno-reg
@drno-reg Автор вопроса
см не кратко
формат даты играл злую шутку, проблема в том, что почему-то в августе эта проблема не проявлялась...

fdatetime=new Date(moment(getUrlParameter("DATETIME_FROM"), "DD.MM.YYYY HH:mm"));
            tdatetime=new Date(moment(getUrlParameter("DATETIME_TO"), "DD.MM.YYYY HH:mm"));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы