碳解析日期格式

Lou*_*s R 5 php datetime date laravel php-carbon

我正在尝试解析一个格式如下的日期:

2017-09-20T10:59:10.0000000 01:00
Run Code Online (Sandbox Code Playgroud)

我正在使用Carbon,所以我尝试了:

Carbon::createFromFormat('Y-m-dTH:i:s.u vP', $date)
Run Code Online (Sandbox Code Playgroud)

哪个输出:

The timezone could not be found in the database\n
Unexpected data found.\n
Data missing
Run Code Online (Sandbox Code Playgroud)

我猜最后一个时区参数可能是错误的,但我找不到如何解析该日期格式的方法:/

感谢帮助 !

Ale*_*nin 5

您需要在时区添加一个符号,例如:

+01:00
Run Code Online (Sandbox Code Playgroud)

然后这将为您工作:

Carbon::createFromFormat('Y-m-d\TH:i:s.0000000 P', $date)
Run Code Online (Sandbox Code Playgroud)

如果您的字符串可以包含-01:00但不是+01:00获取01:00,请首先执行以下操作:

$timezone = str_after($date, ' ');
if ($timezone[0] !== '-') {
    $date = str_before($date, ' ') . ' +' . $timezone;
}
Run Code Online (Sandbox Code Playgroud)