Laravel Carbon格式日期

时间:2016-07-27 19:48:45

标签: php laravel eloquent php-carbon

我通过ajax从我的表单中发布了格式的日期。

27/07/2016

当它击中我的控制器时,我将格式转换为Y-m-d,因为它存储在我的数据库中。

但是我收到以下错误:

  

DateTime :: __ construct():无法解析时间字符串(27/07/2016)at   位置0(2):意外字符

我的控制器

public function call(Request $request)
    {              
        return Company->expenses()->where('date_expense', Carbon::parse($request->start)->format('Y-m-d'))->get();
    }

在我的费用模型中,我将以下定义为日期:

protected $dates = ['date_expense'];

3 个答案:

答案 0 :(得分:5)

使用Carbon的Carbon::createFromFormat($format, $time, $tz);方法:

$start = Carbon::createFromFormat('d/m/Y', $request->start);

return Company->expenses()->where('date_expense', $start)->get();

顺便说一句,没有必要进一步格式化日期,因为Laravel知道如何处理Carbon对象,并会在幕后为你自动完成。

答案 1 :(得分:3)

使用

Carbon::createFromFormat('d/m/Y', $request->start)->format('d/m/Y')

您必须使用此

更改您的代码
return Company->expenses()->where('date_expense', Carbon::createFromFormat('d/m/Y', $request->start)->format('Y-m-d'))->get();

答案 2 :(得分:0)

如果你的laravel框架版本是5.0+ 您可以php artisan -V

查看 我的是Laravel Framework 5.4.19 您可以从laravel文档https://laravel.com/docs/5.4/eloquent-mutators#date-mutators

中进行参考

以下是一个例子:

  1. 如果您的laravel Framework不包含Carbon,则可以运行

    composer require nesbot/carbon

  2. 在您的模型中,例如Post model

  3. class Post extends Model`
    {
        protected $fillable = ["title","body"];`
    
        protected $dates = [`
            'created_at',`
            'updated_at',`
            'deleted_at'`
        ];
    }
    
    1. 使用修补程序添加帖子 在项目目录下打开终端 跑 php artisan tinker
    2. App\Post::create("title"=>"This is Title","body"=>"this is body")

      然后你可以通过Carbon

      获得最新创建的post_at

      App\Post::latest()->get()->created_at->diffForHumans()

      你也可以在这样的刀片中使用相同的方法 {{ $post->created_at->diffForHumans() }}

      Carbon文档网址如下:http://carbon.nesbot.com/docs/