如何将日期字符串解析为 php 中的日期时间?

How to parse date string to dateTime in php?

我有一个格式为“2014-12-01 16:00:02,153”的日期字符串。如何将其解析为 mysql 的日期时间格式?

我正在使用 laravel 和 Carbon。我的代码是 Carbon::parse("2014-12-01 16:00:02,153");

但是得到一个错误 DateTime::__construct(): Failed to parse time string (2014-12-01 16:00:02,153) at position 20 (1): Unexpected character

PHP 对您提交的时间格式感到困惑。

new DateTime("2014-12-01 16:00:02,153"); // fails

strtotime("2014-12-01 16:00:02,153"); // fails

这是因为末尾有逗号的意外部分。你从哪里得到这个用逗号分隔毫秒的奇怪时间戳?不一般。

当您要求通常不需要任何毫秒的日期时间时,您可以执行以下操作:

$timeparts = explode(",","2014-12-01 16:00:02,153");

Carbon::parse($timeparts[0]); // should work

$timeparts[1]就是毫秒了

如果你想更精确,你可以四舍五入毫秒:

if(intval($timeparts[1]) >= 500) {
   // time +1 second
}

... 或者如果您需要 em,您可以单独处理毫秒。稍后将它们添加到生成的时间戳中并查看 Carbon 的文档。

您可以使用 DateTime 对象的 createFromFormat 方法:

$dateTime = DateTime::createFromFormat('Y-m-d H:i:s,u', "2014-12-01 16:00:02,153");
echo $dateTime->format('Y-m-d H:i:s');