比较php中不同格式的日期


Comparing dates in php in differring formats

PHP 5.3.3.

$olddate = '2014-04-30';
$newdate = '30/05/2014';

有没有一种简单的方法来比较这些日期(哪一个是最近的),而不必操纵字符串或改变一个字符串格式?

我想要一张还是两张?

不能将值作为字符串进行比较。

您可以使用'DateTime对象或将此时间转换为整数(时间戳),然后比较。

$oldDate = 'DateTime::createFromFormat('Y-m-d', $oldDate);
$newDate = 'DateTime::createFromFormat('d/m/Y', $newDate);
if ($newDate > $oldDate) {
  // Your action
} else {
  // Your action
}

使用strtotime,它足够智能,可以在通常情况下自动解析字符串。根据文档,

m/d/y或d-m-y格式的日期通过查看来消除歧义不同组件之间的分隔符。

对于有时差的操作,首选使用DateTime(文档)

$date_1 = new DateTime($olddate);
$date_2 = new DateTime($new_date);
$diff = $date_1->diff($date_2);

上面将返回DateInterval对象,其中包含您需要的所有信息(文档)

也可以使用strtotime,它只返回您的时间的unix时间戳。

$stamp_1 = strtotime($oldddate); 
$stamp_2 = strtotime($newdate);
$diff = $stamp_2 - $stamp_1; // really any comparison here