iposave
iposave

Reputation: 97

PHP countdown timer show hours wrong

I am creating a simple timer which takes difference from two dates and outputs it like: 20 days 5 hours 23 minutes. Everything is working okay, when the difference is not biger than month, but when i try big difference, days and minutes show okay, but hour is always +1 hour. How to fix that?

function countdownTimer($targetTime) {
  $targetTime = DateTime::createFromFormat('Y-m-d H:i:s',$targetTime);
  $currentTime = new DateTime();
  $timeDifference = $targetTime->diff($currentTime);

  return $timeDifference->format("%a days %H hours %i minutes");    
}

Upvotes: 0

Views: 234

Answers (1)

dearsina
dearsina

Reputation: 5192

Probably because PHP is accounting for daylight savings and it's coming up to that time of year. I tried your code, everything seems fine:

function countdownTimer($targetTime) {
  $targetTime = DateTime::createFromFormat('Y-m-d H:i:s',$targetTime);
  $currentTime = new DateTime();
  $timeDifference = $targetTime->diff($currentTime);

  return $timeDifference->format("%a days %H hours %i minutes");    
}

$targetTime = date_create("@".time())->add(date_interval_create_from_date_string("+1 month"))->format('Y-m-d H:i:s');

var_dump(countdownTimer($targetTime));

Upvotes: 1

Related Questions