В последнее время я играл с JS, и я нашел что-то интересное. Это то, что я написал в хромированной консоли:Добавление/вычитание времени в JS
today = new Date()
-> Mon Apr 29 2013 13:06:01 GMT+0200 (CEST)
DAY = 1000 * 3600 * 24
-> 86400000
today - 2 * DAY
-> 1367060761452
today + 2 * DAY
-> "Mon Apr 29 2013 13:06:01 GMT+0200 (CEST)172800000"
И мне интересно, почему я получаю различные типы ответа, в зависимости от типа операции - добавление/вычитания. Когда я делаю что-то подобное:
today - (-2) * DAY
все в порядке. Есть ли какая-то идеология, или это ошибка?
Это потому, что '+' может быть добавление или оператор конкатенации, в зависимости от контекста. (Если у вас есть строковое значение и вы пытаетесь «добавить» что-нибудь к нему, второй аргумент обычно преобразуется в строку, а конкатенация происходит вместо добавления.) – CBroe
Посмотрите на http://www.datejs.com/ – cirrus