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

sup*_*ver 18 javascript twitter jquery json date

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

var created = new Date(this.created_at)适用于Firefox和Chrome,但不适用于IE7.我似乎无法通过该new Date()功能传递日期.它只返回undefined和NaN.

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Twitter Test</title>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" >

$(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)
        $("<div></div>").append("<ul><li>Unformatted: " + this.created_at + "</li><li>Formatted: " + created + "</li></ul>").appendTo("body")
    });

})  

})

</script>
</head>

<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Dag*_*bit 17

你要确保日期解析为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"));
} 
Run Code Online (Sandbox Code Playgroud)

这将在本地时区提供正确的日期/时间,例如: 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);
      $("<div></div>").append("<ul><li>Unformatted: " + this.created_at + "</li><li>Formatted: " + created + "</li></ul>").appendTo("body");
    });
  });
  function parseDate(str) {
    var v=str.split(' ');
    return new Date(Date.parse(v[1]+" "+v[2]+", "+v[5]+" "+v[3]+" UTC"));
  } 
});
Run Code Online (Sandbox Code Playgroud)