如何使用php显示两个日期之间的总天数

时间:2018-06-09 18:11:05

标签: php html5 date

我想计算两个日期之间的总天数。

  

注意:我不是在谈论两个日期之间的区别

我在google和Stack Overflow上找到了很多答案。我在这里分享

$now = time(); // or your date as well
$your_date = strtotime("2018-06-01");
$datediff = $now - $your_date;
echo round($datediff / (60 * 60 * 24));

输出为9

$now = strtotime("2018-06-09");
$your_date = strtotime("2018-06-01"); 
$datediff = $now - $your_date;
echo $numberDays= round($datediff / (60 * 60 * 24));

输出为8

$dStart = new DateTime('2018-06-01');
$dEnd  = new DateTime('2018-06-09');
$dDiff = $dStart->diff($dEnd);
echo $dDiff->days;

输出为8

$date1=date_create("2018-06-01");
$date2=date_create("2018-06-09");
$diff=date_diff($date1,$date2);
echo $diff->format("%a");

输出为8

$startTimeStamp = strtotime("2018-06-01");
$endTimeStamp = strtotime("2018-06-09");
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400;  // 86400 seconds in one day
// and you might want to convert to integer
echo $numberDays = intval($numberDays); 

输出为8

对我来说,正确答案是第一个9,因为它显示从1到9的总天数,而不是差异。

我只是想知道如何计算,因为我不想使用时间(),因为它采用的是当前日期。

例如:如果我在2018-05-31选择第一个日期2018-05-01和第二个日期。所以总天数是31天,而不是30天。

实施例: 我正在开展一个与工作日和工资有关的项目。所以员工会选择日期。例如。我是员工,在上个月5月,我选择了2018-05-01和2018-05-31这样的日期,所以我必须显示总工作日。所以根据我工作31天的日期并使用上面的代码在这个问题上我得到了30天。

希望您了解我的问题。你能帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:0)

使用DateTime课程并通过diff()方法进行比较。 $date1->diff($date2)。输出将为您提供准确的天数结果:

$date1 = new DateTime('2018-01-01');
$date2 = new DateTime('2018-02-15');

print_r($date1->diff($date2));

输出:

DateInterval Object 
( 
[y] => 0 
[m] => 1 
[d] => 14 
[h] => 0 
[i] => 0 
[s] => 0 
[f] => 0 
[weekday] => 0 
[weekday_behavior] => 0 
[first_last_day_of] => 0 
[invert] => 0 
[days] => 45 
[special_type] => 0 
[special_amount] => 0 
[have_weekday_relative] => 0 
[have_special_relative] => 0 
)

答案 1 :(得分:0)

你可以试试这个 -

$dateOne = new DateTime("01-01-2018");
$dateTwo = new DateTime("09-06-2018");

echo $diff = $dateTwo->diff($dateOne)->format("%a");

输出 159

答案 2 :(得分:0)

<?php
$date1=date_create("2013-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");
?>

输出:272天。

答案 3 :(得分:0)

这里我在第一个程序php time()中得到了你的解决方案;函数是按照当前时间以毫秒为单位动态变化的(在PHP中你可以简单地调用time()来获得自1970年1月1日00:00:00 GMT以来经过的时间,以秒为单位)这里你使用圆函数在12点之后得到舍入值你的计算将增加到8.5以上,你得到一个圆形值,即9

这里简要说明Getting unix timestamp in milliseconds in PHP5 and Actionscript3

在程序的其余部分中,您将采用不受系统时间影响的静态时间或自定义时间

    $now = time(); // or your date as well
    $your_date = strtotime("2018-06-01");
    $datediff = $now - $your_date;
    echo round($datediff / (60 * 60 * 24));

在12点之前尝试以上程序,也许你得到了答案

答案 4 :(得分:0)

首先编译并打印$now并在几分钟后写下来,第二次编译并打印$now,这将是一个差异