Date.js:Date.now()表现得很奇怪

时间:2011-09-08 14:01:53

标签: javascript date datejs

我正在使用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()函数使用特殊format specifiers

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()是(正如您可能猜到的)onload函数。

注释掉的行导致了问题。评论下方的替换行有效,但不提供我想要的格式。 T应输出h:mm:ss tt(小时,分钟,秒,上午/下午)。缺少am / pm位。

另外,我确信Date.now()今天早些时候正在工作。也许我会试着玩电脑时钟,看看是否有所作为。

包含的date.js版本为date-en-IE.js。代码中的声明日期是2008-05-13,尽管我今天早些时候从SVN结账处得到了它。

2 个答案:

答案 0 :(得分:5)

ECMAScript 5已经有一个Date.now()函数,它返回自1970年1月1日以来的毫秒数。您显然正在调用该版本,因此toString('T')调用是在一个数字上,而不是Date 1}}对象。 Number.prototype.toString只能使用2到36之间的数字作为参数,这是错误的来源。

稍微调查一下后,看起来最新的Datejs版本不再添加自己的Date.now()功能了。也许你在使用它时使用旧版本?

请尝试使用new Date().toString('T'),这应该可以正常工作。

答案 1 :(得分:0)

我在FireFox中遇到了同样的错误。 通过将.toString()方法更改为.toDateString()似乎可以解决这个问题。 示例:Date.now().toDateString('M/d/yyyy HH:mm')