Laravel碳格式日期

问题描述:

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

27/07/2016

当它击中我的控制器我的格式转换为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']; 
+0

你传递的日期时它正在寻找一个时间戳,首先转换为时间戳,然后传入。 – VikingBlooded

+0

我该如何更改?对不起@VikingBlooded –

+0

格式(“Ymd H:我:s) – VikingBlooded

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

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

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

顺便说一句,没有必要进一步格式化日期,因为Laravel知道如何处理Carbon对象,并且会在幕后为您自动执行此操作。

+0

它不会是'dd/mm/yyyy' - 它会是无论PHP的'date()'命令中的格式如何 - 除此之外+1。 – ceejayoz

+0

@ceejayoz是的,修正了这个问题。格式是'd/m/Y' – kfirba

使用

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框架不包含碳,你可以跑

    composer require nesbot/carbon

  2. 在你的模型如Post模型

 
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")

    然后你可以得到最新的cre ated后的created_at由碳

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

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

    作为沿袭了碳文件网址:http://carbon.nesbot.com/docs/

开始=>