Laravel Carbon 格式日期

Laravel Carbon format date

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

2016 年 7 月 27 日

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

但是我收到以下错误:

DateTime::__construct(): Failed to parse time string (27/07/2016) at position 0 (2): Unexpected character

我的控制器

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

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

protected $dates = ['date_expense'];

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

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

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

顺便说一句,不需要进一步格式化日期,因为 Laravel 知道如何处理 Carbon 对象,并且会在幕后自动为您处理。

使用

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();

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

查看

我的是 Laravel Framework 5.4.19 你可以参考 laravel 文档 https://laravel.com/docs/5.4/eloquent-mutators#date-mutators

示例如下:

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

    composer require nesbot/carbon

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

class Post extends Model`
{
    protected $fillable = ["title","body"];`

    protected $dates = [`
        'created_at',`
        'updated_at',`
        'deleted_at'`
    ];
}
  1. 使用 tinker 添加 post 在项目目录下打开终端 运行 php artisan tinker

App\Post::create("title"=>"This is Title","body"=>"this is body")

然后您可以获得 Carbon

最新创建的 post 的 created_at

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

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

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