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)@布拉德-据我所知,什么都没有……这一年是在时区之后;我认为没有任何类似的标准格式。不过,如果我错了,请有人纠正我。@不,我不这么认为,但我想至少试着找出答案。推特使用这样一种非标准格式有点奇怪。谢谢你的帮助。这对我来说非常有用日期,但不解析时间。