簡體   English   中英

PHP或SQL中經過的時間格式

[英]Time elapsed format in PHP or SQL

從Stackoverflow或Facebook這樣的數據庫中獲取元組的時間是多少? 當<1分鍾過去顯示秒數,不到1小時顯示分鍾等。這可以在MySQL中具有比PHP格式更好的性能嗎?

不。這個PHP真的最合適 - 您可以從數據庫中獲取時間戳值,(最終)將其轉換為Unix紀元格式,如下所示:

SELECT UNIX_TIMESTAMP(`when`) FROM `posts` ORDER BY `id` DESC LIMIT 1;

然后計算差異 計算差異,特別是在將其划分為范圍時,您需要MySQL做一些不太適合的事情。

最后,您還可以考慮將處理工作傳遞給用戶 - 只需嘗試使用JavaScript根據時間戳確定差異。 這樣,您就可以使用PHP從數據庫顯示價值,而無需在PHP方面進行進一步處理。

使用JavaScript(jQuery)的解決方案

該解決方案將處理工作轉移給用戶,並允許同時不斷更新時間戳。 JavaScript可能如下所示:

jQuery('span[data-timestamp]').each(function(){
    var el = jQuery(this);
    var then = Math.floor(el.attr('data-timestamp'));
    var updateTime = function(){
        var now = Math.floor((new Date()) / 1000);
        el.html((now - then) + ' seconds ago');
    };
    setInterval(updateTime, 1000);
    updateTime();
});

然后每個片段看起來像這樣:

<span data-timestamp="1320821800"></span>

轉換為相對時間戳並每秒更新一次 (請參閱此jsfiddle )。 如果您想使用它,只需確保updateTime正確地將相對時間戳(以秒為單位)更改為使用不同單位(分鍾,小時,天,周,月,年等......)的相對時間戳。

確保您還有一個字段,用於在數據庫表中存儲創建元組的時間,然后使用簡單的算術(或MySQL的日期/時間函數,請閱讀文檔),選擇時差(轉換為秒)。 然后,PHP端將根據該秒值對要顯示的字符串進行編碼(對於PHP來說,它比數據庫服務器更輕,我猜)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM