PHP 在注册表中比较日期


PHP compare dates in registration form

我有一个注册表,我需要在其中验证用户是否超过 18 岁(用户通过从 3 个下拉菜单中选择值来填写他的出生日期,日、月、年)。哪种方法最好?我正在尝试使用 mktime 并从当前日期中减去出生日期,但无法正确处理。

我会使用DateTime,并按照以下思路做一些事情:

<?php
$year  = (int) $_POST['year'];
$month = (int) $_POST['month'];
$day   = (int) $_POST['day'];
$now = new DateTime();
$dob = new DateTime("$year-$month-$day");
$age = (int) $now->diff($dob)->format("%y");
if ($age < 18) {
    // Denied
}
由于边缘情况,

使用日期通常是有问题的,所以我发现最好把它留给考虑过边缘情况的人设计和开发的库。

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%y');

上面的代码以年为单位返回结果,您可以在条件循环中检查年份以允许用户注册...