[英]AngularJS - Converting timestamp date format to javascript format
[英]Javascript - Trouble converting date format to pretty format
我有以下來自數據庫的日期格式:
Tue, 01 Nov 2011 15:58:56 -0400
我正在嘗試將其轉換為“漂亮”的樣式,例如“ 2個月前”。 我們已經加載了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")`
而且效果很好,無需轉換日期格式。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.