簡體   English   中英

PHP-計算兩個日期之間的差

[英]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.

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