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“。