2017-07-24 101 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')}";