从用户输入字符串到时间

时间:2012-02-25 14:15:29

标签: php strtotime

我有一个注册页面,每天有一个月份和年份下拉框 这些是以数字格式设置的 - (1-31)月(01-12)和年(1993)等。

现在我遇到了将其置于时间戳的问题。

尝试:

$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];

$Dob = strtotime($month . " " . $day . " " . $year);

但是它没有给我任何输出:(。我是否需要以特殊方式组织日期月份?

4 个答案:

答案 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格式。

http://php.net/manual/en/function.strtotime.php

答案 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

http://www.php.net/manual/en/datetime.formats.date.php