[英]Problem with Javascript Date function in IE 7, returns NaN
我有一個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>
您需要確保將日期解析為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"));
}
});
我發現jQuery Globalization Plugin日期解析效果最好。 其他方法有跨瀏覽器問題,像date.js這樣的東西在很長一段時間內都沒有更新。
您也不需要頁面上的datePicker。 您可以調用與文檔中給出的示例類似的內容:
$.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();
}
這給了我“Chrome,IE和Firefox”2012年4月23日下午19:38“。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.