[英]PHP - Calculate the difference between two dates
我想計算兩個日期之間的年數。 其中一個是從數據庫中檢索的,而另一個是從日期格式的用戶輸入中檢索的。
我使用以下代碼從用戶獲取日期:
$today = $_POST['to-day'];
$tomonth = $_POST['to-month'];
$toyaer = $_POST['to-year'];
$dateto = date("$toyaer-$tomonth-$today");
這就是我如何使用從數據庫中檢索到的數據進行計算的方法,
$start = $leaveresult['date']; // i took from database
$end = strtotime($dateto);
$difference = abs($end - $start);
$years = floor($difference / (60*60*24*365));
問題是我得到的結果始終為0
。
我嘗試了不同的方法,但所有方法的結果均為0
,其中之一的結果很大。
這未經測試,但我認為這樣會起作用:
$today = $_POST['to-day'];
$tomonth = $_POST['to-month'];
$toyear = $_POST['to-year'];
$dateto = "$toyear-$tomonth-$today";
$start = $leaveresult['date'];// i took from database
$end = strtotime($dateto);
$difference = abs($end - $start);
$years = floor($difference / (60*60*24*365));
我假設$leaveresult['date']
是Unix時間戳
另外請注意,我固定了post變量名稱。
如果開始日期不在Unix時間戳中,則使用
$start = strtotime($leaveresult['date']);// i took from database
DateTime類通過為您提供diff方法來簡化所有這些操作。 這將返回一個DateInterval對象,您可以獲取想要的值。
假設$_POST
看起來像這樣:
$_POST = array(
'to-year' => 2010,
'to-month' => 8,
'to-day' => 22
);
$leaveresult['date']
看起來像這樣:
$leaveresult = array(
'date' => date('Y-m-d H:i:s', strtotime('-5 years')));
你可以做這樣的事情...
$input_date = new DateTime(sprintf("%d-%d-%d", $_POST['to-year'], $_POST['to-month'], $_POST['to-day']));
$database_date = new DateTime($leaveresult['date']);
$diff = $database_date->diff($input_date);
echo $diff->format('%r%y years') . PHP_EOL;
echo $diff->format('%r%m months') . PHP_EOL;
echo $diff->format('%r%d days') . PHP_EOL;
$years = $diff->y;
哪個會產生
3 years
1 months
5 days
$years
等於3
在這兩種情況下都需要一個時間戳記-格式化的時間戳記(作為日期對象)和從數據庫獲取的時間戳記...因此,如果兩種情況下都獲得時間戳記,那么我認為您的方法沒有錯...但最后您嘗試將數字四舍五入...當然,如果少於一年,結果將為0。 在不先四舍五入的情況下對其進行測試,並測試您的時間戳,也許那里也有問題嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.