2010-09-15 42 views
0

我在某個論壇上發現了這個功能,我用Tweetable在我的網站上顯示了我的最後一條推文。不幸的是,這並不是正確的時間。對於第一個小時,它表示「不到一分鐘前」,然後幾個小時過後,它會變成「不到一小時前」,然後兩天過去,它變成「不到一天前」。我確信它在計算中很愚蠢。jQuery Time Ago with Twitter Plugin

function relTime(time_value) { 
     time_value = time_value.replace(/(\+[0-9]{4}\s)/ig,""); 
     var parsed_date = Date.parse(time_value); 
     var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); 
     var timeago = parseInt((relative_to.getTime() - parsed_date)/1000); 
     if (timeago < 60) return 'less than a minute ago'; 
     else if(timeago < 120) return 'about a minute ago'; 
     else if(timeago < (45*60)) return (parseInt(timeago/60)).toString() + ' minutes ago'; 
     else if(timeago < (90*60)) return 'about an hour ago'; 
     else if(timeago < (24*60*60)) return 'about ' + (parseInt(timeago/3600)).toString() + ' hours ago'; 
     else if(timeago < (48*60*60)) return '1 day ago'; 
       else return (parseInt(timeago/86400)).toString() + ' days ago'; 
     } 

然後它被放進後,像這樣:

if (defaults.time == true) 
    $('li#tweet-'+i).append('<p class="created-date">'+relTime(item.created_at)+'</p>'); 

任何幫助將不勝感激。

回答

2

我使用jQuery timeago plugin來實現你在這裏做的事情,它確實工作得很好。

你試過了嗎?你有自己的理由嗎?至少,你可以參考他們的來源。

您使用正是如此插件:

<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr> 

然後一些腳本:

$().ready(function() { $("abbr.timeago").timeago(); }); 

哦,當然你必須導入插件:

<script src="jquery.timeago.js" type="text/javascript"></script> 
+0

感謝您的建議德魯,但我只是想擴展Tweetable插件,而不是導入一個完整的其他插件來實現這一點。我有一個很好的開始,計算剛剛結束。 – 2010-09-16 20:03:33

0

這是工作本地。 item.created_at是什麼樣的?它在什麼時區?時區有可能關閉嗎? (即服務器返回UTC的時間和客戶端是在EST?)

+0

當它超過一分鐘時,它不能正確讀取它,它不會切換到「5分鐘前」。它停留在「不到一分鐘前」,直到一小時過去,然後說「大約一小時前」。似乎沒有計算分鐘數。 – 2010-09-16 19:49:11