Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > работа с объектом Date()


Автор: bars80080 31.10.2011, 12:28
наблюдаю странное поведение объекта Date(). CALEN_DATE_WORK - рабочий объект, у которого я меняю разные данные, а затем получаю другие.
вначале он установлен на сегодняшнюю дату (а сегодня 31 октября, вдруг это имеет значение). далее я устанавливаю другую дату, чтобы получить в итоге timestamp

в данном случае я устанавливаю 8 ноября: день 8, месяц 10, год 2011

Код

    CALEN_DATE_WORK.setFullYear(ex[2]);
    CALEN_DATE_WORK.setMonth(ex[1]);alert(ex[1] + ', ' + CALEN_DATE_WORK.getMonth());
    CALEN_DATE_WORK.setDate(ex[0]);


в алерте получаю: 10, 11

то есть прямая ошибка

стоит только поменять строчки местами

Код

    CALEN_DATE_WORK.setFullYear(ex[2]);
    CALEN_DATE_WORK.setDate(ex[0]);
    CALEN_DATE_WORK.setMonth(ex[1]);alert(ex[1] + ', ' + CALEN_DATE_WORK.getMonth());

как в алерте наблюдаю: 10, 10

с чем это может быть связано?

Автор: magelan 31.10.2011, 13:05
а чего удивляет то?

логика тупая:

сенни 31 октября... ставим ноябрь, получаем:
31 ноября... упс, жабоскрипт не знал про Менхаузена, он приводит дату к 1му декабря, в ноябре же 30 дней...

если мы ставим сначала 8е число, то 8 ноября - по мнению того же жабаскрипта имеет право на жизнь.

P.$. вообще возьмите за правило работая с месяцами ставить 1е число. Обмороков будет меньше.

Автор: bars80080 31.10.2011, 13:32
Цитата(magelan @  31.10.2011,  13:05 Найти цитируемый пост)
сенни 31 октября... ставим ноябрь, получаем:
31 ноября... упс, жабоскрипт не знал про Менхаузена, он приводит дату к 1му декабря, в ноябре же 30 дней...

да, недодумал

ок

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)