【问题标题】:How to parse date string to dateTime in php?如何在php中将日期字符串解析为dateTime?
【发布时间】:2018-09-25 11:33:45
【问题描述】:

我有一个格式为“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 datetime php-carbon


【解决方案1】:

您可以使用 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 的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-11
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多