两个日期之间的天数返回错误值

时间:2018-03-29 12:18:48

标签: php date

这可能是一个愚蠢的错误。但我仍然只在我的应用程序中得到这个。我无法识别问题。当我在PHPFiddle中尝试相同时,它工作正常。我的PHPFIddle代码如下:

<?php
    $FirstDate = '2018-03-25';
    $LastDate = '2018-03-31';

    $endDate =  strtotime($LastDate);
    $startDate = strtotime($FirstDate);         

    $days = floor(($endDate - $startDate) / 86400 + 1);

    $no_full_weeks = floor($days / 7);
    $no_remaining_days = fmod($days, 7);

    echo $days;
    echo $no_full_weeks ;
    echo $no_remaining_days;

?>

输出为7 1 0.

但我在我的应用程序中也这样做,但它将输出显示为

 private function getWorkingDays($FirstDate,$LastDate,$holidays){

        // i hard coded here for checking only these two dates  
        $FirstDate = '2018-03-25';
        $LastDate = '2018-03-31';           
        $endDate =  strtotime($LastDate);
        $startDate = strtotime($FirstDate);         

        error_log("from".$FirstDate);   
        error_log("to".$LastDate);                  

        $days = floor(($endDate - $startDate) / 86400 + 1);
        error_log("days". $days );
        $no_full_weeks = floor($days / 7);
        $no_remaining_days = fmod($days, 7);

        error_log("no_full_weeks". $no_full_weeks );    
        error_log("no_remaining_days".$no_remaining_days);    
       return $days;    
}

输出

 from 2018-03-25

 to 2018-03-31

 days 6

 no_full_weeks 0

 no_remaining_days 6

问题出现在这两个日期。游行至18日至24日。它工作正常。

1 个答案:

答案 0 :(得分:-1)

添加到@JohnConde评论。你可以使用它并使用时间戳。

更容易使用
 $date = new DateTime(); 
 print $date->getTimestamp(); //prints something like 1522252715

返回当前日/月/年等。

您可以使用date();来处理您希望输出的任何格式,例如2018-03-25

print date("y-m-d",$date->getTimestamp()); //prints out 2018-03-29