给定一个始终与这样的模式匹配的字符串
07-Dec-2016 5:15PM to 5:30PM
使用 PHP 创建两个可用于 MySQL 格式 yyyy-mm-dd hh:mm-ss
的日期时间的最简洁方法是什么?
让我自己的设备,我会用 substr
构建一些笨拙的东西,但我相信 PHP 可以直观地处理日期?
理想情况下:
function convertTimeGiven($timeString) {
// some great code
return $times;
}
echo convertTimeGiven($timeString)['start']; //output 2016-12-07 17:15:00
echo convertTimeGiven($timeString)['end']; //output 2016-12-07 17:30:00
最佳答案
我会这样做:
<?php
header("Content-type: text/plain");
$dateTime = "07-Dec-2016 5:15PM to 5:30PM";
$dateTime = str_replace(" to ", " ", $dateTime);
$dateTime = explode(" ", $dateTime);
print_r($dateTime);
$date1 = strtotime("{$dateTime[0]} {$dateTime[1]}");
$date2 = strtotime("{$dateTime[0]} {$dateTime[2]}");
print_r(date("Y-m-d H:i:s", $date1));
print_r(date("Y-m-d H:i:s", $date2));
?>
输出
Array
(
[0] => 07-Dec-2016
[1] => 5:15PM
[2] => 5:30PM
)
2016-12-07 5:15 pm
2016-12-07 5:30 pm
函数表示
对于您的功能:
<?php
function convertTimeGiven($dateTime) {
$dateTime = str_replace(" to ", " ", $dateTime);
$dateTime = explode(" ", $dateTime);
$date1 = strtotime("{$dateTime[0]} {$dateTime[1]}");
$date2 = strtotime("{$dateTime[0]} {$dateTime[2]}");
return array(
"start" => date("Y-m-d H:i:s", $date1),
"end" => date("Y-m-d H:i:s", $date2)
);
}
?>
输出
<?php
header("Content-type: text/plain");
$dateTime = "07-Dec-2016 5:15PM to 5:30PM";
function convertTimeGiven($dateTime) {
$dateTime = str_replace(" to ", " ", $dateTime);
$dateTime = explode(" ", $dateTime);
$date1 = strtotime("{$dateTime[0]} {$dateTime[1]}");
$date2 = strtotime("{$dateTime[0]} {$dateTime[2]}");
return array(
"start" => date("Y-m-d H:i:s", $date1),
"end" => date("Y-m-d H:i:s", $date2)
);
}
print_r(convertTimeGiven($dateTime));
?>
Array
(
[start] => 2016-12-07 5:15 pm
[end] => 2016-12-07 5:30 pm
)
参与两天
注意:如果事件在上午 12 点之后结束,您需要手动添加一天。
<?php
header("Content-type: text/plain");
$dateTime = "07-Dec-2016 11:15PM to 12:30AM";
function convertTimeGiven($dateTime) {
$dateTime = str_replace(" to ", " ", $dateTime);
$dateTime = explode(" ", $dateTime);
$date1 = strtotime("{$dateTime[0]} {$dateTime[1]}");
$date2 = strtotime("{$dateTime[0]} {$dateTime[2]}");
if ($date1 > $date2)
$date2 = strtotime("{$dateTime[0]} {$dateTime[2]} + 1 day");
return array(
"start" => date("Y-m-d H:i:s", $date1),
"end" => date("Y-m-d H:i:s", $date2)
);
}
print_r(convertTimeGiven($dateTime));
?>
关于php - 如何在 PHP 中将字符串 "[date] [time] to [time]"转换为两个日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41292732/