4

我正在使用date.js。

该行time_container.innerHTML = Date.now().toString('T');运行良好,短暂,现在在 Firebug 控制台中抛出错误:radix must be an integer at least 2 and no greater than 36. 它肯定在早些时候工作。

注意: date.jstoString()函数使用特殊的格式说明符

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(小时,分钟,秒,上午/下午)。缺少上午/下午位。

另外,我敢肯定Date.now()今天早些时候工作。也许我会尝试使用计算机时钟来看看这是否会有所作为。

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

4

2 回答 2

5

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

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

试试new Date().toString('T')吧,这两种方法都应该有效。

于 2011-09-08T14:54:50.717 回答
0

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

于 2013-08-05T14:29:25.237 回答