我正在尝试从表单提交中获取日期/时间的单个值,并将它们解析为某种格式的日期。
如果验证因任何原因(例如 2 月 30 日、13 月等)失败,则结果应默认为当前时间。
if (isset($_POST['year'], $_POST['month'], $_POST['day'], $_POST['hour'], $_POST['minute']))
{
$y = $_POST['year'];
$m = $_POST['month'];
$d = $_POST['day'];
$h = $_POST['hour'];
$i = $_POST['minute'];
if (checkdate($m, $d, $y))
{
if ($h >= 0 && $h <= 23)
{
if ($i >= 0 && $i <= 59)
{
$str = $y.'-'.$m.'-'.$d.' '.$h.':'.$i.':00';
$time = strtotime($str);
}
else $time = time();
}
else $time = time();
}
else $time = time();
}
else $time = time();
$datetime = date('D j M Y - H:i:s T', $time);
echo $datetime;
发生了两件事我不明白:
如果缺少一个或多个日期值,则会出现有关 checkdate() 的错误...我不明白为什么验证不会在第一个 if() 时失败
如果缺少一个或多个时间值,最终结果是 UNIX 纪元?!