2017-01-03 3 views
0

Ich habe zu Daten. Jetzt muss ich den Unterschied zwischen diesen beiden für weitere Berechnungen finden.Suche nach Tagen zwischen zwei Daten in Laravel

Ich habe verschiedene Möglichkeiten ausprobiert, aber ich bin nicht in der Lage, die Probleme zu beheben. Kann mir jemand den besten Weg sagen, es zu tun?

Mein Code ist:

public function leaveRequest(request $request) 
{ 
    $fdate=$request->Fdate; 
    $tdate=$request->Tdate; 

    $start = Carbon::parse($fdate)->format('Y/m/d'); 
    $end = Carbon::parse($tdate)->format('Y/m/d'); 

    $days = $end->diffInDays($start); 
    /*$days=date_diff($end,$start);*/ 
    echo $days; 
    exit; 

    $user = User::findOrFail(Auth::user()->id); 
    Mail::send('pages.leave', ['user' => $request,'userId'=>$user], function ($m) use ($request) { 
     $m->to($request->Email)->subject('Leave Request!'); 
    }); 

    DB::table('leaves')->insert(
     ['user' => Auth::user()->id, 'request_date' => Carbon::now(),'start' => $start,'end' => $end,'permissions' => "Pending",'leave_status' => "Active"] 
    ); 

    return redirect()->back()->with('message','Your request has sent'); 
} 

Wenn ich die Tage erhalten können, dann habe ich es in die Blätter Tabelle einfügen.

Antwort

3

Sie brauchen Carbon nicht, Sie können das mit einfachem PHP tun. Am besten ist es, PHP OOP zu verwenden. Wie folgt aus:

$fdate = $request->Fdate; 
$tdate = $request->Tdate; 
$datetime1 = new DateTime($fdate); 
$datetime2 = new DateTime($tdate); 
$interval = $datetime1->diff($datetime2); 
$days = $interval->format('%a');//now do whatever you like with $days 

PS: Datetime ist keine Funktion, es ist eine Klasse, so vergessen Sie nicht, hinzuzufügen: use DateTime; oben des Controllers, so dass er nach rechts Wurzelklasse verweisen können oder Verwendung \ Datetime() stattdessen beim Erstellen seiner Instanz.

Ich hoffe, es

+0

hilft ich in einem Controller-Code schreibe. Dieser Code löst einen Fehler aus: Klasse 'App \ Http \ Controllers \ Admin \ DateTime' nicht gefunden. DateTime funktioniert mit PHP. –

+0

Fügen Sie am oberen Rand des Controllers 'use DateTime;' hinzu und versuchen Sie es erneut. – Learner

+0

Versuchte das und es hat funktioniert !. Vorher verwendete ich DateTime of Carbon. Es hat mir nicht geholfen. Danke –

1
$to = \Carbon\Carbon::createFromFormat('Y-m-d H:s:i', '2015-5-5 3:30:34'); 
$from = \Carbon\Carbon::createFromFormat('Y-m-d H:s:i', '2015-5-6 9:30:34'); 

$diff_in_days = $to->diffInDays($from); 

print_r($diff_in_days); // Output: 1 
Verwandte Themen