我有一个Twitter提要,并且创建了一个新的日期obj,因此可以根据自己的喜好格式化日期。
var created = new Date(this.created_at)适用于Firefox和Chrome,但不适用于IE7。我似乎在通过new Date()函数传递日期方面遇到麻烦。它只是返回undefined和NaN。
var created = new Date(this.created_at)
new Date()
这是代码。如果您尝试对其进行测试,请不要忘记添加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
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)
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")); } });