пятница, 12 ноября 2010 г.

Что-то с датой в JavaScript

Недавно столкнулся с одной особенностью JavaScript, а точнее класса Date. Во всех известных мне языках программирования (и других языках) 01-01-2000 - это первое января двухтысячного года. В JavaScript - это первое февраля двухтысячного года.

Чтобы получить первое января нужно создавать объект Date так: new Date(2000, 0, 1). Соответственно от остальных месяцев тоже нужно отнять единицу, т.к. в конструкторе класса Date они нумеруются с 0 по 11.

4 комментария:

  1. Все очень просто.
    JavaScript.Date.parse не поддерживает форматы даты "01-01-2000", "01.01.2000", "2000.01.01"
    Но поддерживает, например:
    "01,01,2000", "2000,01,01", "2000-01-01", "01/01/2000", "2000/01/01"

    Так что, таким кодом можно все решить:
    var date = '01-01-2000';
    var date_formated = date.split('-').reverse().join('-');
    var timestamp = Date.parse(date_formated) / 1000;
    // var date_object = new Date(date_formated);

    ОтветитьУдалить
  2. Спасибо за вариант решения, но моё решение с вычитанием единицы было не сложнее ).

    В любом случае для проверки даты мне нужно было использовать метод getMonth(), а он возвращает 0-11. Просто очень непривычно.

    ОтветитьУдалить
  3. Ну да, по идиотски я бы даже сказал. Еще бы день сделали от 0 до 30 =)

    ОтветитьУдалить

Мои записи и на Я.ру — levelost!