简体   繁体   中英

getting hours and day difference between two dates in codeigniter

i am getting two dates as $date1 = 2020-07-16 03:50:32 $date2 = 2017-01-25 09:43:53

i want to get the difference between thes two dates. THe difference count hours until 24 hours and then days plus hours. eg. 2 days and 5 hours.

THe code i tried is this

  $createddate = date("d-m-Y H:i:s", strtotime($application['created_at']));
    
     $approvedisapprovedate = date("d-m-Y H:i:s", strtotime($application['approved_at']));
     
     $created = strtotime($createddate);
    $approvedisapprove = strtotime($approvedisapprovedate);
        $diff = $approvedisapprove - $created;
        $days = floor($diff / (60 * 60 * 24));
       $hours = round(($diff - $days * 60 * 60 * 24) / (60 * 60));

but it won't work.anybody suggest a solution.

You can use carbon for this. Carbon can make it simple to manipulate dates very efficiently not for only this task but many other related date.

Install carbon

{
  "require": {
    "nesbot/carbon": "^1.22"
  }
}

Usage

$date->diffForHumans();

OR

$date->diffInDays();

In your case, you can try below code -

$createddate = Carbon::parse($application['created_at']);
$approvedisapprovedate = Carbon::parse($application['approved_at']);

//here is carbon magic
$createddate->diffInDays($approvedisapprovedate); //This will give you diff in number of days.

$createddate->diffForHumans($approvedisapprovedate); //This will give you diff which is readable by human. ex- 1 day 2 hours

You can refer Carbon .

Hope this will help for you.

I propose you the DateInterval::format function of php like this:

$createddate = new DateTime('12-07-2020 12:10:01');
$approvedisapprovedate = new DateTime('16-07-2020 13:15:40');
        
$interval = $approvedisapprovedate->diff($createddate);

echo $interval->format('%a days %h hours %i minutes')."\n";

It goes back to this:

4 days 1 hours 5 minutes

I don't know the format of the date $application['created_at'] and $application['approved_at'] but I just put it there:

$createddate = new DateTime($application['created_at']);
$approvedisapprovedate = new DateTime($application['approved_at']);
        
$interval = $approvedisapprovedate->diff($createddate);

echo $interval->format('%a days %h hours %i minutes')."\n";

voici le lien de DateInterval::format : https://www.php.net/manual/fr/dateinterval.format.php

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM