我想要一個php函數來轉換一個Unix時間戳到這樣的:php函數將Unix時間戳轉換爲分鐘或幾小時或幾天像digg?
15秒
或
45分鐘
或
3小時
和不是這樣的:2秒,5分,9小時
我只想要一個像Digg值(由流行XX XXXXX)
感謝
我想要一個php函數來轉換一個Unix時間戳到這樣的:php函數將Unix時間戳轉換爲分鐘或幾小時或幾天像digg?
15秒
或
45分鐘
或
3小時
和不是這樣的:2秒,5分,9小時
我只想要一個像Digg值(由流行XX XXXXX)
感謝
PHP不具有一個內置函數來爲你做它,所以你必須通過做手工。該功能將獲得天,小時,分鐘,秒的差異,在格式返回「X天/小時/分/秒」:
<?php
function GetTimeDiff($timestamp) {
$how_log_ago = '';
$seconds = time() - $timestamp;
$minutes = (int)($seconds/60);
$hours = (int)($minutes/60);
$days = (int)($hours/24);
if ($days >= 1) {
$how_log_ago = $days . ' day' . ($days != 1 ? 's' : '');
} else if ($hours >= 1) {
$how_log_ago = $hours . ' hour' . ($hours != 1 ? 's' : '');
} else if ($minutes >= 1) {
$how_log_ago = $minutes . ' minute' . ($minutes != 1 ? 's' : '');
} else {
$how_log_ago = $seconds . ' second' . ($seconds != 1 ? 's' : '');
}
return $how_log_ago;
?>
如果這是一個網站,你可能會考慮Timeago。否則,該算法非常簡單。喜歡的東西:
$diff = $date - $now;
if ($diff > 2 * ONE_YEAR)
return sprintf("%d years", round($diff/ONE_YEAR));
else if ($diff > ONE_YEAR)
return "1 year";
else if ($diff > 2 * ONE_MONTH)
return sprintf("%d months", round($diff/ONE_MONTH));
...etc...
試試這個:
function toFriendlyTime($seconds) {
$measures = array(
'day'=>24*60*60,
'hour'=>60*60,
'minute'=>60,
'second'=>1,
);
foreach ($measures as $label=>$amount) {
if ($seconds >= $amount) {
$howMany = floor($seconds/$amount);
return $howMany." ".$label.($howMany > 1 ? "s" : "");
}
}
return "now";
}
正如你所看到的,它也是靈活添加/刪除的時間的措施,你認爲合適。請務必將這些措施從大到小排列。測試:
now
1 second
2 seconds
1 minute
1 hour
1 day
:
print(
toFriendlyTime(0)."\n"
.toFriendlyTime(1)."\n"
.toFriendlyTime(2)."\n"
.toFriendlyTime(60)."\n"
.toFriendlyTime(3600)."\n"
.toFriendlyTime(24*3600)."\n"
);
在結果