2013-04-15 18 views
0

我得到了2個日期時間對象。一個是當前的日期時間。另一個是當用戶簽入時,我想添加6個小時。如何使用PHP將日期時間與日期時間+ X小時進行比較?

我第一次初始化當前日期時間:

$now=date("Y-m-d H:i:s"); 

然後我使用DATEDIFF但我現在沒怎麼加6個小時,我想我將不得不使用修改,但我不瞭解如何使用它。

$datetimeIn = date_create($result->getDateCheckIn()); 

    $datetimeOut = date_create($now); 
    date_modify($datetimeOut, '+6 hours'); 
    $interval = date_diff($datetimeIn, $datetimeOut); 
    if ($interval->format('%a minute') > 0) 
     $UsersToCheckOut[] = $result; 

有人可以幫助我計算如何將X小時添加到日期時間以與另一個日期時間進行比較嗎?

我得到這個錯誤: date_create()期望參數1是字符串,對象在行date_modify($ datetimeOut,'+6 hours');

感謝

回答

2

我將試圖回答這兩個標題和我推斷你是從你的問題的屍要價的問題。

實際上比較日期時間的PHP手冊非常明確。以下是示例代碼:

$date1 = new DateTime("now"); 
$date2 = new DateTime("+6 hours"); 

var_dump($date1 == $date2); 
var_dump($date1 < $date2); 
var_dump($date1 > $date2); 

//bool(false) 
//bool(true) 
//bool(false) 

實際添加6小時的部分也是正確的。我複製了你的代碼並進行了測試,看看我是否可以像你那樣得到同樣的錯誤。我做了當我的$ datetimeIn參數不好。根據這個和你發佈的錯誤,它看起來非常像問題在於你的$ datetimeIn參數。我複製了我下面的工作代碼:

$now=date("Y-m-d H:i:s", strtotime('2013-04-15 04:00:0')); 

$datetimeIn = date_create($now); 
$datetimeOut = date_create($now); 
date_modify($datetimeOut, '+6 hours'); 
$interval = date_diff($datetimeIn, $datetimeOut); 

if ($interval->format('%a minute') > 0) { 
    echo "success";  
} else { 
    echo "fail"; 
} 

根據錯誤信息,它是在你的線,因爲發生「$ datetimeOut = date_create(現爲$);」,變量$現在存在和​​一些類型的對象; date_create()需要第一個參數是某種字符串。請參見文檔有關有效日期和時間格式here

+0

這是有禮貌地解釋你爲什麼低估了某人。我們都在這裏學習,所以如果你告訴我我做錯了什麼,我可以避免將來的錯誤。 –

+1

我沒投你一票,但我懷疑是因爲你沒有真正回答這個問題。你展示了一些類似的代碼並聲明它不會產生任何錯誤,然後提出一個問題。目前尚不清楚您是否提供解決方案。就目前而言,這可能被標記爲「不是答案」。如果你想從OP獲得更多信息,那麼請使用評論來提問。有關更多信息,請參見[如何回答](http://stackoverflow.com/questions/how-to-answer)。 – vascowhite

+0

感謝您的評論。我會編輯我的評論,使我想說得更清楚。 –

1

你可以得到一個副本,其中的6小時偏移,這樣的:

$now = date_create('now'); 
$future = date_modify(clone $now, '+ 6 hours'); 
$diff = date_diff($now, $future); 
var_dump($diff);die; 
0
$datetimein = date("m/d/Y H:i:s"); 
$datetimeout = date("m/d/Y H:i:s", strtotime($datetimein) + 6 * 60 * 60); 

看到它的工作生活:http://codepad.viper-7.com/6wn8dK

+0

OP聲明他正在使用DateTime對象而不是字符串,所以像[this](http://codepad.viper-7.com/5pgIgB)這樣的內容可能會更相關。 – TML

+0

@TML你是對的,我在發佈後見過它。 – michi