Converting a carbon date to mysql timestamp.

﹥>﹥吖頭↗ 提交于 2019-11-29 09:26:22

You can also set Mutator on your model.

public function setPublishedAt($value)
{
    $this->attributes['published_at'] = strtotime($value);
}

to convert to timestamp

$model -> setPublishedAt('2015-08-26'); // 1440572400

or you can just convert the date to timestamp using strtotime

strtotime — Parse about any English textual datetime description into a Unix timestamp

Hope this help.

The short answer is that toDateTimeString() is what you're looking for:

$input['published_at'] = Carbon::now()->toDateTimeString();

See http://carbon.nesbot.com/docs/ for more options, including toDateString() if you just want the date part and not the time.

But an even better way to handle it would be to let Laravel handle casting the date value to/from a Carbon object for you. See https://laravel.com/docs/5.4/eloquent-mutators#date-mutators.

iCoders

The problem is in your date string, for example, you have this:

public function setCrbDateAttribute($value)
{
     $this->attributes['crb_date'] = \Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}

Now, if there is a date like 10-12-2014 then this error will occur because the hour and minute is missing. So you make sure that the date contains all the pars and also make sure that the date string contains - as a separator not /.

In other words, check the $value before you use Carbon and make sure your date string contains exactly the same formatted string you've used in the method.

This also happens in an accessor method, so check the date value first before you use it in Carbon::createFromFormat().

If you are getting the date from user input then validate the date before using it using date or date_format:format rule, check the validation here.

Answer ref:

Laravel/Carbon Timestamp 0000-00-00 00:00:00 or Unexpected data found. Unexpected data found. Data missing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!