是否有更多正确的方法来比较当前日期和截止日期?
date_default_timezone_set('Asia/Jakarta');
$deadline = date('2016-04-26 23:59:59');
$deadline = strtotime($deadline);
$now = strtotime("now");
if ($now > $deadline) {
echo 'Deadline has passed.';
} elseif ($now === $deadline) {
echo 'The same time.';
} else {
echo 'You have time';
}
这是比较当前日期和截止日期的正确方法吗?
IMO 不,您应该使用 DateTime 类,即:
<?php
date_default_timezone_set('Asia/Jakarta');
$deadLine = new DateTime('2016-04-26 23:59:59');
$deadLine->format("Y-m-d H:i:s");
$now = new DateTime();
if ($now > $deadLine ) {
echo 'Deadline has passed.';
} elseif ($now == $deadLine) {
echo 'Same time';
} else {
$interval = $now->diff($deadLine);
echo 'You have ' . $interval->format('%R%a days');
}
Ideone 演示
您给出的代码应该按预期工作,但样式有些"旧"。"现代"版本将使用DateTime
系列对象。
$tz = new DateTimezone('Asia/Jakarta');
$deadline = new DateTime('2016-04-26 23:59:59', $tz);
$now = new DateTime('now');
if ($now > $deadline) {
echo 'Deadline has passed.';
} elseif ($now === $deadline) {
echo 'The same time.';
} else {
echo 'You have time';
}
此方法的一个特定优点是不必全局修改默认时区。