如何使用正确的日期验证输入日期并在php中更正闰年的输入

时间:2013-05-23 10:05:52

标签: php

您好我正在创建一个约会表格,其中包含输入日期,即我正在使用日期,月份和年份的下拉框。我设法验证用户从今天开始24小时输入,但是如果用户输入了任何月份不可用的内容,例如。 2013年6月31日,2013年9月31日,表格已成功提交,但是,我从帖子中得到的是,它会发送到前一个月,例如用户密钥在31 / 06 / 2013 ,结果我得到31 / 05 / 2013,和其他人一样。你可以看到月份不正确。

我现在拥有的是要验证的代码;

$appointment_inputdate = mktime(0,0,0, intval($appointment_day), intval($appointment_month), intval($appointment_year));
$appointment_today = mktime(0,0,0, date("d"), date("m"), date("Y")); 

我现在所拥有的只是这个,但对于错误的日期,我不知道如何制作它

if ($appointment_inputdate <= $appointment_today) {
echo "
    <div style=\"background-color: #E00;\">
        Submission fail. Your appointment date must be at least 24 hours before. Please go back and change the date.
    </div>
    <input style=\"padding:10px 20px;margin-top:20px;\" type=button value=\"Back\" onClick=\"history.go(-1)\">
";
exit();
}

2 个答案:

答案 0 :(得分:2)

您可以使用checkdate功能。它检查格里高利历中日期的有效性,并考虑闰年:

bool checkdate ( int $month , int $day , int $year )

例如:

<?php
var_dump(checkdate(12, 31, 2000));
var_dump(checkdate(2, 29, 2001));
?>

输出

bool(true)
bool(false)

如果日期不正确,您可以轻松添加一些基本规则来尝试并更正它(例如,如果年份不是闰年,则将2月29日替换为3月1日。)

答案 1 :(得分:1)

正如Wookai所说,首先检查日期。

此外,您的mktime输入顺序错误。

请参阅mktime()

  

mktime($ hour,$ minute,$ second, $ month,$ day,$ year )。

编辑:

要检查日期更新,请添加:

if (!checkdate ((int)$month,(int)$day,(int)$year)) {
echo "
    <div style=\"background-color: #E00;\">
        Not a valid date;
    </div>
    <input style=\"padding:10px 20px;margin-top:20px;\" type=button value=\"Back\" onClick=\"history.go(-1)\">
";
exit();
}

您可以尝试在提交表单上使用jquery来帮助用户。见datepicker