php将日期转换为mktime函数

时间:2014-01-18 15:11:15

标签: php datetime mktime

我发布日期输入$_POST['date'],格式为2013/11/22,时间$_POST['time']格式为10:10 AM。现在我需要将两个输入放在mktime函数中,如下所示:

mktime(10, 10, 0, 11, 22, 2013);

如何创建此内容?

3 个答案:

答案 0 :(得分:2)

您可以使用DateTime::createFromFormat从任意格式创建DateTime对象。然后,您可以使用该对象获取时间戳(或以另一种方式格式化日期):

// $_POST['date'] = '2013/11/22';
// $_POST['time'] = '10:10 AM';

$datetime = $_POST['date'] . ' ' . $_POST['time'];
$datetime = DateTime::createFromFormat('Y/m/d h:i A', $datetime);

if ($datetime) {
    $timestamp = $datetime->getTimestamp();
} else {
    echo 'Invalid date or time.';
}

我的解决方案(Y/m/d h:i A)中的格式要求输入的所有部分都有前导零(例如2013-01-01 01:01 AM)。如果输入不使用前导零,则必须更改输入格式。您可以在documentation中看到所有支持的格式字符。

答案 1 :(得分:0)

您只需使用 explode() 功能

$array = explode('/', $_POST['date']);
$arraytwo = explode (':', $_POST['time']);

通过这种方式,你将有两个数组来填充mktime函数。

其他人提供的解决方案也可以完成这项工作。

答案 2 :(得分:0)

您不需要使用mktime。是的条目是字符串,然后使用strtotime函数更加一致。

//$_POST['date'] = '2013/11/22';
//$_POST['time'] = '10:10 AM';

$dateTime   = "{$_POST['date']}{$_POST['time']}";

$timeStamp  = strtotime($dateTime);

if($timeStamp===false):

  throw new \Exception("The date or time format is not valid!");

endif;