Laravel - 为什么当我在 MongoDB 上插入 Carbon::now() 时有 timezone_type 和 timezone

Jan*_*ose 1 mongodb laravel php-carbon

当我回声Carbon::now()。它只显示日期时间。“2018-07-05 09:21:21”

但是当我在 MongoDB 上插入它时,它变成了一个对象;

{
    "date" : "2018-07-05 09:21:21.020981",
    "timezone_type" : 3,
    "timezone" : "UTC" 
}
Run Code Online (Sandbox Code Playgroud)

我只想要date. 为什么会这样?

编辑:

我试过这样做

$currentDateTime = strtotime(Carbon::now());

$request->merge([
    'dateSample' => date("Y-m-d H:i:s", $currentDateTime)
]);
Run Code Online (Sandbox Code Playgroud)

但它保存为string类型。我需要它是Date类型。

Dav*_*vit 5

因为当你echo Carbon::now()那个时候调用__toString函数 这里是一段代码。

public function __toString()
{
    return $this->format(static::$toStringFormat);
} 
Run Code Online (Sandbox Code Playgroud)

如果你使用dd(Carbon::now());你必须看到这个结果

{
    "date" : "2018-07-05 09:21:21.020981",
    "timezone_type" : 3,
    "timezone" : "UTC" 
}
Run Code Online (Sandbox Code Playgroud)

echo Carbon::now();这种情况下,您会看到结果Carbon::now()->__toString()为“2018-07-05 09:21:21”;
编辑
对于获取DateTime对象,您可以

$currentDateTime = \Carbon\Carbon::now()->toDateTimeString();
$date = new DateTime($currentDateTime);
Run Code Online (Sandbox Code Playgroud)