2011-09-08 121 views
4

我使用date.js.Date.js:Date.now()行为古怪

线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结帐中获得了它。

+0

你想做什么? 'toString'的参数是你想要编码的基础。例如,'toString(16)'会给你十六进制。 –

+0

啊,我现在看到date.js有一个'toString'函数(http://code.google.com/p/datejs/wiki/APIDocumentation#toString)。那么它会在我看来,如果它不工作,你没有正确包括date.js。尝试在控制台中执行'Date.today'并查看它返回的内容。 –

+0

'Date.today()'返回'日期{Thu Sep 08 2011 00:00:00 GMT + 0100(GMT Daylight Time)}'在控制台中。并且,在同一个脚本中,'date_container.innerHTML = Date.today()。toString('MM的MM的yyyy');'工作正常。这个问题似乎只与'Date.now()'有关。 – TRiG

回答

5

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

看了一下后,它看起来像最新的Datejs版本不再增加自己的Date.now()函数。也许你在工作时使用的是旧版本?

尝试new Date().toString('T')而不是,这应该以任何方式工作。

+0

这确实奏效,但第二个问题仍然适用:日期格式未正确应用。不管我叫'T'还是'h:mm:ss tt',我得到的是'HH:mm:ss'。但我想这是一个很好的细节,并不重要。 – TRiG

+0

@TRIG:我现在还没有答案。这可能是Datejs中的一个错误。 –

0

我在FireFox中有一个相同的错误。 通过将.toString()方法更改为.toDateString()似乎照顾了该问题。 例如:Date.now().toDateString('M/d/yyyy HH:mm')