Javascript-将日期格式转换为漂亮格式时出现问题
Javascript - Trouble converting date format to pretty format
我有以下来自数据库的日期格式:
Tue, 01 Nov 2011 15:58:56 -0400
我想做的是将其转换为"两个月前"这样的"漂亮"风格。我们已经将pretty.js作为依赖项加载,我希望能够直接调用(*请注意,我需要它来专门在safari中工作):
prettyDate(someDate)
到目前为止,我无法输出任何内容。看起来插件想要ISO格式?我试过一些简单的转换,但都没有用。我真的不认为我需要在这里做太多复杂的解析,我是不是错过了一些简单的事情,可以让我的日期达到ISO,达到漂亮?
非常感谢你的想法。
演示
当我换成
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))
});
*编辑,所以下面的内容适用于Chrome,但在Safari中仍然返回未定义?你知道我能做些什么让Safari像Chrome一样正确处理日期吗???非常感谢。
因此,解决方案最终相当简单。正如它所写的,pretty.js为31天前的日期返回undefined
(我觉得真的很奇怪…)
很明显,我只使用较旧的日期,所以很难理解。
有了一个更新的日期或对代码进行一些小的修改,你可以简单地做:
`prettyDate("Fri, 30 Dec 2011 15:58:56 -0400")`
它工作得很好,不需要转换日期格式。
感谢
相关文章:
- 格式问题:下拉复选框
- JSON 格式问题
- 响应出现JSON格式问题
- 反应格式问题
- Chrome 扩展程序 - 将 CSV 文件上传到 Dropbox 格式问题
- Angularjs - javascript 日期格式问题
- 使用 momentjs 和引导日历时的日期格式问题
- JSON,JAXB,格式问题
- WordPress格式问题 - 存档和间距
- 复制时 JQuery 日期选取器日期格式问题
- D3 堆栈区域数据格式问题
- 姜戈模板 - 日期格式问题
- d3包布局中的Json格式问题
- Javascript Web API JSON解析格式问题
- 将表格导出为CSV字符串格式问题到单独的单元格中
- 通过电子邮件发送HTML-格式问题
- jQuery之后的文本格式问题
- JSON到jQuery/JavaScript的日期格式问题
- Ext.data.store POST数据为JSON格式问题
- DB到JSP:解决数字格式问题的最佳方法是什么