繁体   English   中英

如何检查$ _POST数组中的日期是否不大于PHP中的今天的日期?

[英]How to check whether the date coming in $_POST array is not greater than today's date in 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();

如果发布的格式为mdY ,则不能直接使用strtotime()函数将其转换为unix时间戳,因为它将返回false

如果需要使用strtotime()可以通过简单的str_replace()将输入格式更改为m/d/Y

另一方面,可以使用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";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM