我需要在PHP中比較過去/未來日期與當前日期,並在「4小時直到」,或「2天3小時直到」或「5小時前」格式。可選擇在「-4h」(這是壞的)或「4h」(這是好的)格式。在PHP中返回兩個日期的差異
因此,在一個例子:
x = $expiry_date - $todays_date
如果結果是積極的,如。 $ expiry_date將來是4小時,x =「要走4小時」或「4小時」。如果結果爲負數,例如「4小時前」或「-4小時」。
任何其他類似的探測結果格式都很好。
請幫忙嗎?
我需要在PHP中比較過去/未來日期與當前日期,並在「4小時直到」,或「2天3小時直到」或「5小時前」格式。可選擇在「-4h」(這是壞的)或「4h」(這是好的)格式。在PHP中返回兩個日期的差異
因此,在一個例子:
x = $expiry_date - $todays_date
如果結果是積極的,如。 $ expiry_date將來是4小時,x =「要走4小時」或「4小時」。如果結果爲負數,例如「4小時前」或「-4小時」。
任何其他類似的探測結果格式都很好。
請幫忙嗎?
$date1 = "2013-08-11";
$date2 = "2012-07-12";
$diff = abs(strtotime($date2) - strtotime($date1));
$years = floor($diff/(365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24)/(30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
printf("%d years, %d months, %d days\n", $years, $months, $days);
或者
$date1 = new DateTime("2007-03-24");
$date2 = new DateTime("2009-06-26");
$interval = $date1->diff($date2);
echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days ";
//or simply
//echo "difference " . $interval->days . " days ";
+1用於提示OO方法 –
同樣在這裏,用於顯示兩種方法的+1,尤其是OO。 –
小心使用'$ time + = 24 * 60 * 60'等計算來操縱時間戳。這會產生夏令時和其他時區異常問題。改用'$ time = strtotime('+ 1 day',$ time)'等方法。 – ironcito
該變量將包含以秒爲單位的差異,然後您可以根據需要進行劃分以獲得分鐘/小時/天等。除以60得到分鐘數,再次得到60小時數等等。然後進行一些簡單的值檢查以根據需要進行格式化。
您可以使用Carbon庫來實現。 它會去是這樣的:
$now = Carbon::now();
$then = Carbon::create(2013, 8, 8, 23, 26, 11);
echo $now->diffForHumans($then);
輸出將是一個人類可讀的字符串,就像你在找什麼。
如果你得到時間戳的差異,那麼它只是在一個小時,一天等簡單的秒數劃分 – MightyPork
你能舉個例子嗎? – TomaszRykala
http://stackoverflow.com/questions/1416697/converting-timestamp-to-time-ago-in-php-eg-1-day-ago-2-days-ago –