IE 7中的Javascript Date函数问题,返回NaN

我有一个Twitter提要,我创建了一个新的日期对象,所以我可以根据自己的喜好格式化日期。

var created = new Date(this.created_at)在firefox和chrome中工作,但在IE7中不起作用。 我似乎无法通过new Date()函数传递日期。 它只返回undefined和NaN。

这是代码。 如果您尝试测试它,请不要忘记包含jquery。 谢谢。

     Twitter Test   $(function(){ $.getJSON("http://twitter.com/statuses/user_timeline/google.json?count=1&callback=?", function(data){ $.each(data, function(){ var created = new Date(this.created_at) $("
").append("
  • Unformatted: " + this.created_at + "
  • Formatted: " + created + "
").appendTo("body") }); }) })

您需要确保将日期解析为UTC,否则javascript会将其解释为您当地时区的日期。

日期如下: Tue Jul 13 23:18:36 +0000 2010

你可以像这样解析它:

 function parseDate(str) { var v=str.split(' '); return new Date(Date.parse(v[1]+" "+v[2]+", "+v[5]+" "+v[3]+" UTC")); } 

这将在当地时区给出正确的日期/时间,例如: Tue Jul 13 2010 19:18:36 GMT-0400 (EDT)

所以这应该让你的代码看起来像这样:

 $(function(){ $.getJSON("http://twitter.com/statuses/user_timeline/google.json?count=1&callback=?", function(data){ $.each(data, function(){ var created = parseDate(this.created_at); $("
").append("
  • Unformatted: " + this.created_at + "
  • Formatted: " + created + "
").appendTo("body"); }); }); function parseDate(str) { var v=str.split(' '); return new Date(Date.parse(v[1]+" "+v[2]+", "+v[5]+" "+v[3]+" UTC")); } });

我发现jQuery Globalization Plugin日期解析效果最好。 其他方法有跨浏览器问题,像date.js这样的东西在很长一段时间内都没有更新。

您还不需要页面上的datePicker。 您可以调用与文档中给出的示例类似的内容:

 $.parseDate('yy-mm-dd', '2007-01-26'); 

这是我为纠正这个做出的!

 $tweetList.append('

' + parseTwitterDate(item.created_at) + location + '

'); var month=new Array(); month[0]="January"; month[1]="February"; month[2]="March"; month[3]="April"; month[4]="May"; month[5]="June"; month[6]="July"; month[7]="August"; month[8]="September"; month[9]="October"; month[10]="November"; month[11]="December"; function parseTwitterDate($stamp) { var v=$stamp.split(' '); var date = new Date(Date.parse(v[1]+" "+v[2]+", "+v[5]+" "+v[3]+" UTC")); var hour = date.getHours(); var ampm = hour<12 ? ' AM' : ' PM'; return date.getHours() +':'+ date.getMinutes() +' '+ ampm +' '+ date.getDate() +' '+ month[date.getMonth()] +' '+ date.getFullYear(); }

这给了我“Chrome,IE和Firefox”2012年4月23日下午19:38“。