Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE 7中的Javascript日期函数有问题,返回NaN_Javascript_Jquery_Json_Date_Twitter - Fatal编程技术网

IE 7中的Javascript日期函数有问题,返回NaN

IE 7中的Javascript日期函数有问题,返回NaN,javascript,jquery,json,date,twitter,Javascript,Jquery,Json,Date,Twitter,我有一个推特订阅源,我创建了一个新的日期对象,这样我就可以根据自己的喜好格式化日期 var created=new Date(this.created_at)适用于firefox和chrome,但不适用于IE7。我似乎在通过newdate()函数传递日期时遇到问题。它只返回undefined和NaN 这是代码。如果您试图测试它,请不要忘记包含jquery。多谢各位 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

我有一个推特订阅源,我创建了一个新的日期对象,这样我就可以根据自己的喜好格式化日期

var created=new Date(this.created_at)
适用于firefox和chrome,但不适用于IE7。我似乎在通过
newdate()
函数传递日期时遇到问题。它只返回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>

推特测试
$(函数(){
$.getJSON(“http://twitter.com/statuses/user_timeline/google.json?count=1&callback=?,函数(数据){
$.each(数据,函数(){
var created=新日期(this.created\u at)
$(“”)。追加(“
  • 未格式化:“+this.created_at+”
  • 格式化:“+created+”
”)。追加(“正文”) }); }) })
您需要确保将日期解析为UTC,否则javascript会将其解释为本地时区中的日期

日期如下:
2010年7月13日星期二23:18:36+0000

您可以这样解析它:

function parseDate(str) {
  var v=str.split(' ');
  return new Date(Date.parse(v[1]+" "+v[2]+", "+v[5]+" "+v[3]+" UTC"));
} 
$(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"));
  } 
});
这将给出本地时区的正确日期/时间,例如:
2010年7月13日星期二19:18:36 GMT-0400(EDT)

因此,您的代码应该如下所示:

function parseDate(str) {
  var v=str.split(' ');
  return new Date(Date.parse(v[1]+" "+v[2]+", "+v[5]+" "+v[3]+" UTC"));
} 
$(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"));
  } 
});
$(函数(){
$.getJSON(“http://twitter.com/statuses/user_timeline/google.json?count=1&callback=?,函数(数据){
$.each(数据,函数(){
var created=parseDate(this.created_at);
$(“”)。追加(“
  • 未格式化:“+this.created_at+”
  • 格式化:“+created+”
”)。追加(“正文”); }); }); 函数解析日期(str){ var v=str.split(“”); 返回新日期(Date.parse(v[1]+“”+v[2]+”,“+v[5]+“”+v[3]+“UTC”); } });
我发现日期解析最有效。其他方法存在跨浏览器问题,date.js等内容已经有一段时间没有更新了

页面上也不需要日期选择器。您可以调用与文档中给出的示例类似的内容:

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

这是我为纠正这一点所做的

$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();
}
$tweetList.append(“”+parseTwitterDate(item.created_at)+location+”

); var month=新数组(); 月[0]=“一月”; 月[1]=“2月”; 月[2]=“三月”; 月[3]=“4月”; 月[4]=“五月”; 月[5]=“6月”; 月[6]=“7月”; 月[7]=“8月”; 月[8]=“9月”; 月[9]=“10月”; 月[10]=“11月”; 月[11]=“12月”; 函数parseTwitterDate($stamp){ var v=美元邮票分割(“”); var date=新日期(date.parse(v[1]+“”+v[2]+”,“+v[5]+“”+v[3]+“UTC”); var hour=date.getHours();
var ampm=hourThank you。这很好。我还在学习。如果我理解正确的话。你创建了一个名为parseDate的新函数,并传递该日期字符串,然后通过在有空格的地方拆分它来创建一个新数组。然后你以适当的格式重新组织它。另外,我是这个网站的新手。那么我要做什么才能给你呢rep points?是的,确实如此。在末尾添加“UTC”或“GMT”也很重要;如果没有这一点,js将假定这是用户本地时区的时间(当然不是;twitter的服务器不一定知道用户所在的时区)。您可以单击我对+1我的回答旁边的
0
上方的三角形,但我认为您需要创建一个帐户来执行此操作。:)您将此格式称为什么?(2010年7月13日星期二23:18:36+0000)@布拉德-据我所知,什么都没有……这一年是在时区之后;我认为没有任何类似的标准格式。不过,如果我错了,请有人纠正我。@不,我不这么认为,但我想至少试着找出答案。推特使用这样一种非标准格式有点奇怪。谢谢你的帮助。这对我来说非常有用日期,但不解析时间。