我有来自数据库的以下日期格式:
Tue, 01 Nov 2011 15:58:56 -0400
我要做的是将其转换为“漂亮”的风格,如“2个月前”。我们已将pretty.js作为依赖项加载,我希望能够只调用(*请注意我需要这个才能在safari中专门工作):
prettyDate(someDate)
到目前为止,我无法输出任何内容。看起来这个插件想要ISO格式?我尝试了一些简单的转换,但无济于事。我真的不认为我应该在这里进行很多复杂的解析,我是否遗漏了一些简单的事情,我可以做我的日期到ISO,漂亮吗?
非常感谢任何想法。
答案 0 :(得分:1)
当我改为
时 var date = new Date(time);
我能做到
<span id="date">Fri, 30 Dec 2011 15:58:56 -0400</span><br/>
<span id="prettydate"></span>
使用
var dateString = $("#date").text();
$("#prettydate").text(prettyDate(dateString))
或
<span class="jqdate" title="Wed, 28 Dec 2011 15:58:56 -0400"></span>
<span class="jqdate" title="Thu, 29 Dec 2011 15:58:56 -0400"></span>
使用
$(".jqdate").prettyDate();
在OSX SnowLeopard上的Fx10和Safari 5中测试
/*
* JavaScript Pretty Date
* Copyright (c) 2011 John Resig (ejohn.org)
* Licensed under the MIT and GPL licenses.
*/
// Takes an ISO time and returns a string representing how
// long ago the date represents.
function prettyDate(time){
// var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," "));
var date = new Date(time);
var diff = (((new Date()).getTime() - date.getTime()) / 1000),
day_diff = Math.floor(diff / 86400);
if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 ) {
alert("Not a date or too old")
return "";
}
return day_diff == 0 && (
diff < 60 && "just now" ||
diff < 120 && "1 minute ago" ||
diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
diff < 7200 && "1 hour ago" ||
diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
day_diff == 1 && "Yesterday" ||
day_diff < 7 && day_diff + " days ago" ||
day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";
}
$(document).ready(function() {
// If jQuery is included in the page, adds a jQuery plugin to handle it as well
if ( typeof jQuery != "undefined" )
jQuery.fn.prettyDate = function(){
return this.each(function(){
var date = prettyDate(this.title);
if ( date )
jQuery(this).text( date );
});
};
var dateString = new String(Date.parse($("#date").html()));
$("#prettydate").text(prettyDate(dateString))
});
答案 1 :(得分:0)
* 编辑,因此以下适用于Chrome,但STILL在Safari中返回未定义?知道我可以做些什么来让Safari正确处理日期,因为Chrome是???非常感谢。
所以解决方案最终变得相当简单。如上所述,pretty.js会在31天之前的日期返回undefined
(我觉得很奇怪......)。
我显然只是使用较旧的日期,所以很难捕捉到。
使用较新的日期或一些微小的代码,你可以做到:
`prettyDate("Fri, 30 Dec 2011 15:58:56 -0400")`
它工作正常,无需转换日期格式。
由于