我有一个注册页面,每天有一个月份和年份下拉框 这些是以数字格式设置的 - (1-31)月(01-12)和年(1993)等。
现在我遇到了将其置于时间戳的问题。
尝试:
$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];
$Dob = strtotime($month . " " . $day . " " . $year);
但是它没有给我任何输出:(。我是否需要以特殊方式组织日期月份?
答案 0 :(得分:4)
试
<?php
if (empty($_POST['month']) || empty($_POST['day']) || empty($_POST['year'])) {
// handle invalid input, at least one of month, day, year wasn't given
} else if (!checkdate($_POST['month'], $_POST['day'], $_POST['year'])) {
// handle invalid date, such as February 30th
} else {
// convert to epoch (unix timestamp)
$time = mktime(0, 0, 0, $_POST['month'], $_POST['day'], $_POST['year']);
}
除此之外,日期输入的三个<select>
非常1998。为什么不使用<input type="date">
呢?这允许浏览器弹出日期选择器(可以是polyfilled)。
答案 1 :(得分:1)
$Dob = strtotime($day . "-" . $month . "-" . $year);
注意:强>
通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。
答案 2 :(得分:1)
两件事:
1)永远不要假设数据对用户输入是安全的,即使它来自下拉列表。 (int)强制每个项目为整数。虽然在这种情况下并不重要,但始终清理数据输入对数据库存储非常重要。
2)你只需要斜杠。 strtotime
认可These Formats
$Dob = strtotime((int)$month . "/" . (int)$day . "/" . (int)$year);
答案 3 :(得分:0)
必须遵循手动页面上引用的预定义日期格式类型之一。 http://php.net/manual/en/function.strtotime.php