首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IE 7中的Javascript日期函数存在问题,返回NaN

IE 7中的Javascript日期函数存在问题,返回NaN
EN

Stack Overflow用户
提问于 2010-07-14 13:18:17
回答 3查看 20.5K关注 0票数 18

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

var created = new Date(this.created_at)可以在火狐和chrome中运行,但不能在IE7中运行。我似乎在通过new Date()函数传递日期时遇到了问题。它只返回undefined和NaN。

下面是代码。如果您试图测试它,不要忘记包含jquery。谢谢。

代码语言:javascript
复制
<!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>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-14 13:32:26

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

日期看起来像这样:Tue Jul 13 23:18:36 +0000 2010

你可以这样解析它:

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
$(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"));
  } 
});
票数 17
EN

Stack Overflow用户

发布于 2010-12-31 06:02:50

我发现jQuery Globalization Plugin日期解析工作得最好。其他方法有跨浏览器的问题,像date.js这样的东西已经很长时间没有更新了。

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

代码语言:javascript
复制
$.parseDate('yy-mm-dd', '2007-01-26');
票数 3
EN

Stack Overflow用户

发布于 2012-04-25 04:00:47

这是我用来纠正这个错误的方法!

代码语言:javascript
复制
$tweetList.append('<p><span class="twitterdate">' + parseTwitterDate(item.created_at) + location + '</span></p>');

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 PM”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3243546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档