一尘不染

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

json

我有一个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>

阅读 270

收藏
2020-07-27

共1个答案

一尘不染

您需要确保将日期解析为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);
      $("<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"));
  } 
});
2020-07-27