检查日期如下:
$submission_date = 12-25-2014; //The date in mm-dd-yyyy format that is to be tested against today's date
现在我想回显错误消息,因为变量中包含的日期$submission_date
是未来日期。
我应该如何使用 PHP 高效且有效地做到这一点?
提前致谢。
检查日期如下:
$submission_date = 12-25-2014; //The date in mm-dd-yyyy format that is to be tested against today's date
现在我想回显错误消息,因为变量中包含的日期$submission_date
是未来日期。
我应该如何使用 PHP 高效且有效地做到这一点?
提前致谢。
有很多方法可以做到这一点(例如,使用 DateTime::createFromFormat() 来控制输入日期的确切格式)但可能最适合该示例的最简单方法是:
$isFuture = (strtotime($submission_date) > strtotime($_POST['current_date']))
请注意,OP改变了问题。如果想要测试的日期不在 $_POST 数组中,只需替换strtotime($_POST['current_date'])
为time()
使用当前系统时间。
要与当前日期进行比较,不考虑一天中的时间,请使用:
$today = new DateTime(date("Y-m-d"));
// $today = new DateTime("today"); // better solution courtesy of Glavić
// see http://php.net/manual/en/datetime.formats.relative.php for more info
$today_timestamp = $today->getTimestamp();
如果发布的格式是 in m-d-Y
,那么你不能直接用strtotime()
函数将它转换为 unix 时间戳,因为它会返回false
.
如果您需要使用strtotime()
,请将输入格式更改为m/d/Y
by simplestr_replace()
。
另一方面,您可以使用DateTime
类,您可以在其中直接比较对象:
$submission_date = DateTime::createFromFormat('!m-d-Y', $submission_date);
$today_date = new DateTime('today');
if ($submission_date > $today_date) {
echo "submission_date is in the future\n";
}
使用 PHP DateTime,您可以检查输入日期是未来还是旧日期。
$submission_date = DateTime::createFromFormat('m-d-Y', $submission_date);
$submission_date = $submission_date->format('Y-m-d');
$current_date = new DateTime('today');
$current_date = $current_date->format('Y-m-d');
if ($submission_date > $current_date)
{
echo "Future date";
}
else
{
echo "Old date";
}