我有一个日期字符串,格式为“ 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
答案 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的文档。