2017-07-24 131 views
0

我必須使用php比較datetime對象,$availability是包含(從:2017-07-24 16:20:08.0000002017-07-25 16:20:08.000000)以及何時是2017-07-23 16:20:08.000000的日期數組。比較日期時間對象php

/// when : 2017-07-23 
$when = DateTime::createFromFormat('Y-m-d', '2017-07-23'); 
// from : 2017-07-24 
$from = DateTime::createFromFormat('Y-m-d', '2017-07-24'); 
// to : 2017-07-25 
$to = DateTime::createFromFormat('Y-m-d', '2017-07-25'); 
if ($when >= $from && $when <= $to) { echo $when . "is between from and to"; } 

這不行,還是我錯過了什麼?

如何比較DateTime::createFromFormat中的對象?是否有可能,還是我必須strtotime

+1

說明「不工作」....您的意思是它顯示消息之間? –

+2

'$ when'是23日,小於24日的'$ from'。所以第一個條件'$ when> = $ from'立即失敗。另外,你不能'echo $'; - 它是一個對象,而不是一個字符串。你需要使用'$ when-> format(「Y-m-d」)'而不是回顯。 – Qirel

+0

'echo $ when'也會得到一個錯誤,例如類DateTime的對象無法轉換爲字符串'使用'$ when-> format('YYYY-mm-dd')' – RiggsFolly

回答

0

的一些問題:

1)條件將無法給予的投入。具體而言,您的$when對象在您的$from對象之前(前一天)持有一段時間。因此,$when >= $from在if語句中失敗。

2)if語句塊內的代碼會給出錯誤。由DateTime::createFromFormat()方法創建的變量是DateTime 對象。你不能回顯一個對象,它必須轉換成一個字符串,這可以通過使用DateTime類的format方法來完成。因此,將if塊中的代碼重寫爲:

echo "{$when->format('Y-m-d')} is between {$from->format('Y-m-d')} and {$to->format('Y-m-d')}";