如何在PHP中将时间字符串转换为sql时间戳

时间:2019-04-23 14:52:42

标签: php mysql sql

我想将通过HTTP POST获得的时间字符串插入带有时间戳字段的mysql表中。我该怎么办?

我的PHP代码是

$time_string="Apr 23, 2019 4:30:15 PM";
$query = $database->prepare('INSERT INTO trips(trip_start) VALUES(?)') {
$query->bind_param("s", $time_string]);
$query->execute();

trip_start是MYSQL中的时间戳数据类型

2 个答案:

答案 0 :(得分:0)

I would recommend to use Carbon library to work with date formats as it makes this and other operations really easy. In this particular case i would do something like this:

$carbonDate = new Carbon\Carbon('Apr 23, 2019 4:30:15 PM');
$timeStamp = $carbonDate->toDateTimeString();

Now timeStamp is a valid timestamp for mysql.

答案 1 :(得分:0)

使用PHP的DateTime将一种格式转换为另一种格式。您不需要任何依赖项,例如Carbon,对于您的用例来说这是过分夸张的。

您需要告诉PHP输入日期格式是什么,以及输出所需的内容。

您的代码将"Apr 23, 2019 4:30:15 PM"声明为日期。在您的输入和MySQL期望的输入之间转换的代码如下:

$date = 'Apr 23, 2019 4:30:15 PM';
$input_format = 'M d, Y H:i:s A'; // Apr 23, 2019 4:30:15 PM
$output_format = 'Y-m-d H:i:s' // 2019-04-23 16:30:15
$timezone = new \DateTimeZone("UTC"); // Make sure to correctly choose your time zone

$dt = \DateTime::createFromFormat($input_format, $date, $timezone);

echo $dt->format($output_format); // echoes "2019-04-23 16:30:15"

无需外部依赖,快速,简单且易读。