如何在PHP中将日期字符串解析为dateTime?

时间:2018-09-25 11:33:46

标签: php datetime php-carbon

我有一个日期字符串,格式为“ 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

的错误

2 个答案:

答案 0 :(得分:4)

您可以使用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');

答案 1 :(得分:2)

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的文档。