2013-10-29 48 views
1

我運行這個腳本,它可以很好地估計天氣相關事件發生之前的多少時間。但是午夜它變得瘋狂並且在整個午夜時間,它會返回像-1100分鐘和東西的瘋狂的負面時間,然後當它到達0100時它恢復正常並且報告如20分鐘等。PHP每天午夜精神一小時的時間

腳本:

$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 

我知道日期函數在PHP5.3的午夜時間有問題。但我運行PHP 5.3,所以不應該是一個問題。我不需要日期,這只是我需要的時間,天氣相關的東西最多隻報告幾小時的差異。

任何有關替代功能或編碼的建議,可以在午夜停止這種痙攣嗎?

+2

你有沒有嘗試使用'DATETIME()'? –

+0

不,我看着它,但我不太明白這個功能。我怎麼能用它來顯示現在只有時間和沒有日期? – ArnoldJRimmer

+0

'$ gettimefromtextfile''看起來像什麼?你可以給出一些示例值嗎? – msturdy

回答

1

怎麼樣使用DateTime::diff?不要重新發明輪子!

<?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'); 
?> 

參考:http://php.net/manual/en/datetime.diff.php

+0

看起來非常好,我今天就修改我的代碼,等到午夜,看看它是否正常運行:)非常感謝。 – ArnoldJRimmer

+0

@ArnoldJRimmer不要忘記將代碼更改爲您的時區,否則會有一段糟糕的時間!如果一切正常,接受答案! – TCB13