Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP比较注册表中的日期_Php_Date - Fatal编程技术网

PHP比较注册表中的日期

PHP比较注册表中的日期,php,date,Php,Date,我有一份登记表,我需要在其中验证用户是否超过18岁(用户通过从3个下拉菜单中选择日、月、年的值来填写其出生日期)。哪种方法最好? 我正在尝试使用mktime并从当前日期中减去出生日期,但无法正确执行。我将使用,并按照以下方式执行操作: <?php $year = (int) $_POST['year']; $month = (int) $_POST['month']; $day = (int) $_POST['day']; $now = new DateTime(); $dob =

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

我将使用,并按照以下方式执行操作:

<?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
}
我会使用,并按照以下思路做一些事情:

<?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
}

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


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

请发布到目前为止您拥有的代码。到底是什么不起作用?减法是否给出了错误的年龄?您是否没有从输入中获得正确的日期?你现在的日期错了吗?您需要具体说明哪些不起作用。请发布您目前掌握的代码。哪些不起作用?减法是否给出了错误的年龄?您是否没有从输入中获得正确的日期?你现在的日期错了吗?你需要明确哪些不起作用。+1是一个好答案。但是,请注意,
DateTime->diff()
方法仅在PHP5.3中可用,因此如果您仍停留在5.2(或更糟的版本!),则需要使用其他方法。+1才能获得好的答案。但是,请注意,
DateTime->diff()
方法仅在PHP5.3中可用,因此如果您仍停留在5.2(或更糟的版本!),则需要使用其他方法。