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

时间:2018-07-05 09:24:27

标签: 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" 
}

我只想要date上的数据。为什么会这样?

编辑:

我尝试这样做

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

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

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

2 个答案:

答案 0 :(得分:3)

因为当您echo Carbon::now()那个时候称为__toString函数时 这是代码。

public function __toString()
{
    return $this->format(static::$toStringFormat);
} 

如果您使用dd(Carbon::now());,则一定会看到此结果

{
    "date" : "2018-07-05 09:21:21.020981",
    "timezone_type" : 3,
    "timezone" : "UTC" 
}

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

$currentDateTime = \Carbon\Carbon::now()->toDateTimeString();
$date = new DateTime($currentDateTime);

答案 1 :(得分:0)

确保您的数据库表列设置为类型date example_date date DEFAULT NULL,

糟糕,您要使用merge()的错误

$request->merge([
    'dateSample' => \Carbon\Carbon::now()->format('Y-m-d');
]);