我想在PHP中使用日期做一點數學運算。我正在修改一個留言框,並且我想要實現以下功能。PHP日期問題
如果發佈日期=今天,返回後
其他時間,如果日期=昨日,回報 「昨天」
其他日期= X天前
將如何我使用php的日期函數來計算多少天前時間戳記(時間戳在UNIX時間格式化)
我想在PHP中使用日期做一點數學運算。我正在修改一個留言框,並且我想要實現以下功能。PHP日期問題
如果發佈日期=今天,返回後
其他時間,如果日期=昨日,回報 「昨天」
其他日期= X天前
將如何我使用php的日期函數來計算多少天前時間戳記(時間戳在UNIX時間格式化)
試試這個:
$shoutDate = date('Y-m-d', $shoutTime);
if ($shoutDate == date('Y-m-d'))
return date('H:i', $shoutTime);
if ($shoutDate == date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 1, date('Y'))))
return 'yesterday';
return gregoriantojd(date('m'), date('d'), date('y')) - gregoriantojd(date('m', $shoutTime), date('d', $shoutTime), date('y', $shoutTime)) . ' days ago';
在php 5.3.0或更高版本中,您可以使用DateTime::diff(又名date_diff())。
在幾乎任何PHP中,您可以將日期轉換爲Unix時間戳,並將它們之間的差異除以86400(以秒爲單位)。
不要忘了,PHP 5.3還沒有出來(如2009年6月) – Greg 2009-06-25 14:08:20
使用DateTime類,然後你有一個方法diff。
嘗試使用date_parse。
從手冊:
<?php
print_r(date_parse("2006-12-12 10:00:00.5"));
?>
將打印
Array
(
[year] => 2006
[month] => 12
[day] => 12
[hour] => 10
[minute] => 0
[second] => 0
[fraction] => 0.5
[warning_count] => 0
[warnings] => Array()
[error_count] => 0
[errors] => Array()
[is_localtime] =>
)
使用的事實,時間存儲在幾秒鐘:
$days = floor(($shoutTime - time())/86400) + 1; // 86400 = 24*60*60
switch ($days) {
case 0:
return date('H:i', $shoutTime);
case -1:
return 'yesterday';
case 1:
return 'tomorrow';
}
return "$days ago";
我不認爲這是有人指出你可以使用strtotime得到「昨天」。它比「手工」計算日期更容易理解(並且更易於記憶),並且可能也不太容易出錯。
$ int = strtotime('Yesterday');
if(date('Y-m-d', $shoutTime) == date('Y-m-d') {
return date('H:i:s', $shouTime);
} elseif(date('Y-m-d', $shoutTime) == date('Y-m-d', strtotime('Yesterday')) {
return "Yesterday.";
} else {
$days = floor($shoutTime - time()/86400);
return "$days ago.";
}
完美。謝謝一堆 – 2009-06-25 14:11:10