Date.js: Date.now () ведет себя странно - PullRequest
4 голосов
/ 08 сентября 2011

Я использую date.js.

Строка time_container.innerHTML = Date.now().toString('T'); работала нормально, кратко, и теперь выдает ошибки в консоли Firebug: radix must be an integer at least 2 and no greater than 36. Это конечно работало раньше.

Примечание. Функция date.js toString() использует специальные спецификаторы формата .

.
var show_date = {
    setup: function() {
        setInterval(show_date.update, 5000);
    },
    update: function() {
        var date_container = app.get('js_date');
        var time_container = app.get('js_time');

        if (date_container) {
            date_container.innerHTML = Date.today().toString('dS of MMMM yyyy');
        }
        if (time_container) {
            //time_container.innerHTML = Date.now().toString('T');
            var d1 = new Date();
            time_container.innerHTML = d1.toString('T');
        }
    }
}
app.onload(show_date.setup);

app.get() - это просто сокращение для document.getElementById(). app.onload() - это (как вы можете догадаться) функция загрузки.

Закомментированная строка вызывает проблемы. Подстановочные строки под комментарием работают, но не дают желаемый формат. T должно выдать h:mm:ss tt (часы, минуты, секунды, am / pm). Бит am / pm отсутствует.

Кроме того, я уверен, что Date.now() работал сегодня раньше. Возможно, я попробую поиграть с компьютерными часами, чтобы понять, имеет ли это значение.

Версия date.js включена date-en-IE.js. Заявленная дата в коде - 2008-05-13, хотя я получил ее сегодня из кассы SVN.

Ответы [ 2 ]

5 голосов
/ 08 сентября 2011

ECMAScript 5 уже имеет функцию Date.now(), которая возвращает количество миллисекунд с 1 января 1970 года. Вы, очевидно, вызываете эту версию, так что вызов toString('T') для числа, а не для объекта Date.Number.prototype.toString может принимать в качестве аргумента только число от 2 до 36. Отсюда и ошибка.

После небольшого изучения выглядит, что последняя версия Datejs не добавляет еесобственная Date.now() функция больше.Может быть, вы использовали старую версию, когда она работала?

Попробуйте вместо этого new Date().toString('T'), которая должна работать в любом случае.

0 голосов
/ 05 августа 2013

У меня была такая же ошибка в FireFox. Изменяя метод .toString () на .toDateString () кажется, решил эту проблему. Пример: Date.now().toDateString('M/d/yyyy HH:mm')

...