【发布时间】:2014-06-02 09:59:29
【问题描述】:
PHP 5.3.3。
$olddate = '2014-04-30';
$newdate = '30/05/2014';
有没有一种简单的方法来比较这些日期(哪个是最近的),而无需操作字符串或更改一种字符串格式?
我正在寻找一两个班轮?
【问题讨论】:
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,它足够聪明,可以在常见情况下自动解析字符串。根据documentation,
m/d/y 或 d-m-y 格式的日期可以通过查看来消除歧义 各个组件之间的分隔符。
【讨论】:
使用DateTime (documentation) 优先用于有时间差异的操作
$date_1 = new DateTime($olddate);
$date_2 = new DateTime($new_date);
$diff = $date_1->diff($date_2);
上面会返回 DateInterval 对象,里面包含了你需要的所有信息(documentation)
也可以使用strtotime,它只返回你时间的unix时间戳。
$stamp_1 = strtotime($oldddate);
$stamp_2 = strtotime($newdate);
$diff = $stamp_2 - $stamp_1; // really any comparison here
【讨论】: