Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中将日期字符串解析为dateTime?_Php_Datetime_Php Carbon - Fatal编程技术网

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

如何在php中将日期字符串解析为dateTime?,php,datetime,php-carbon,Php,Datetime,Php Carbon,我有一个格式为2014-12-01 16:00:02153的日期字符串。如何将其解析为mysql的日期时间格式 我用的是laravel和Carbon。我的代码是Carbon::parse2014-12-01 16:00:02153 但是得到一个读取日期时间的错误::u构造:未能解析位置20处的时间字符串2014-12-01 16:00:02153 1:意外字符PHP被您正在移交的时间格式弄糊涂了 new DateTime("2014-12-01 16:00:02,153"); // fails

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

我用的是laravel和Carbon。我的代码是Carbon::parse2014-12-01 16:00:02153


但是得到一个读取日期时间的错误::u构造:未能解析位置20处的时间字符串2014-12-01 16:00:02153 1:意外字符

PHP被您正在移交的时间格式弄糊涂了

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

strtotime("2014-12-01 16:00:02,153"); // fails
这是因为结尾有逗号的意外部分。你从哪里得到这个用逗号分隔毫秒的奇怪时间戳?这是不寻常的

当您请求datetime(通常不需要任何毫秒)时,可以执行以下操作:

$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,可以单独处理毫秒。稍后将它们添加到生成的时间戳中,并检查碳的文档。

您可以使用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!