PHP每天午夜的精神时间为一小时

I run this script which works sweet estimating how much time before something weather related happens. But a midnight it goes crazy and for the whole midnight hour, it returns crazy negative times like -1100 minutes and stuff, then when it gets to 0100 hrs it's back to normal and reports, like 20 mintues etc.

Script:

  $timenow = date("H:i:s");

  $eventtime= strtotime("$gettimefromtextfile"); //time the weather event will happen in the near future
 $TimeEnd = strtotime($timenow);
 $Difference = ($eventtime - $TimeEnd);
if ($Difference >= 0) {
 $minutes = floor(($Difference / 60)); 
// print how many minutes until an event happens, discard it if event is in the past

I know the date function had issues with midnight up to PHP 5.3. But I am running PHP 5.3 so shouldn't be an issue. I don't need the date, it is only time I need, weather related stuff is reported only hours difference at most.

Any suggestions on an alternative function or coding that will stop this spasm at midnight?

What about using DateTime::diff? Don't reinvent the wheel!

<?php
date_default_timezone_set('Europe/Lisbon'); 

$next = new DateTime('18:00:01');
$now = new DateTime();
$diff = $next->diff($now);

echo $diff->format('%h hours, %i minutes');
?>

Reference: http://php.net/manual/en/datetime.diff.php