我发布日期输入$_POST['date']
,格式为2013/11/22
,时间$_POST['time']
格式为10:10 AM
。现在我需要将两个输入放在mktime
函数中,如下所示:
mktime(10, 10, 0, 11, 22, 2013);
如何创建此内容?
答案 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;