Tage zwischen zwei Daten in Laravel finden [duplicate]

Lesezeit: 4 Minuten

Benutzeravatar von Kiran Rai Chamling
Kiran Rai Chamling

Ich muss mich verabreden. Jetzt muss ich den Unterschied zwischen diesen beiden für weitere Berechnungen finden.

Ich habe verschiedene Möglichkeiten ausprobiert, aber ich kann die Probleme nicht beheben. Kann mir jemand sagen wie ich das am besten mache.

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 bekomme, kann ich sie in die Blatttabelle einfügen.

  • Die eigentliche Antwort auf diese Frage ist, einfach zu tun $start = Carbon::parse($fdate); Und $end = Carbon::parse($tdate); Durch die Verwendung der Carbon::format() Funktion haben Sie eine Zeichenfolge erhalten, also hätten Sie einen Fehler wie “Call to member function diffInDays() on non-object” erhalten.

    – Mike32

    5. Dezember 2022 um 23:14 Uhr


Benutzeravatar von Abhay Maurya
Abhay Maurya

Sie brauchen kein Carbon, das können Sie mit einfachem PHP tun. Am besten verwenden Sie PHP OOP. So was:

$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, also vergessen Sie nicht hinzuzufügen: use DateTime; oben auf Ihrem Controller, damit er auf die richtige Root-Klasse verweisen oder verwenden kann \DateTime() stattdessen beim Erstellen seiner Instanz.

  • Ich schreibe diesen Code in einem Controller. Dieser Code löst einen Fehler aus: Klasse „App\Http\Controllers\Admin\DateTime“ nicht gefunden. DateTime funktioniert mit PHP.

    – Kiran Rai Chamling

    3. Januar 2017 um 13:25 Uhr

  • Hinzufügen use DateTime; oben auf dem Controller und versuchen Sie es erneut.

    – Abhay Maurya

    3. Januar 2017 um 13:27 Uhr

  • Versucht, und es funktionierte!. Vorher habe ich DateTime von Carbon verwendet. Es hat mir nicht geholfen. Danke

    – Kiran Rai Chamling

    3. Januar 2017 um 13:30 Uhr

  • @Kiran Rai Chamling, Bitte markieren Sie die Antwort als akzeptiert, wenn es Ihnen geholfen hat, diesen Thread zu schließen. Danke

    – Abhay Maurya

    3. Januar 2017 um 13:31 Uhr


  • Nur für den Fall, dass etwas schief gelaufen ist, können Sie hinzufügen try { } catch (\Exception $e){} auf Ihrem DateTime Code. Weil DateTime Klasse würde werfen Exception wenn Fehler aufgetreten ist. Danke an PHPStorm für die Erinnerung.

    – ibnɘꟻ

    24. Januar 2020 um 3:16 Uhr

Benutzeravatar von Paddy Sable
Reis Zobel

$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

Benutzeravatar von HadiNiazi
HadiNiazi

Warum nicht den Carbon-Helfer verwenden, um das genaue Datum zu erhalten

$to = \Carbon\Carbon::parse($request->to);
$from = \Carbon\Carbon::parse($request->from);

        $years = $to->diffInYears($from);
        $months = $to->diffInMonths($from);
        $weeks = $to->diffInWeeks($from);
        $days = $to->diffInDays($from);
        $hours = $to->diffInHours($from);
        $minutes = $to->diffInMinutes($from);
        $seconds = $to->diffInSeconds($from);

Jeder, der die PHP-Version < PHP 5.3 verwendet, kann Zeitstempel verwenden, wie folgt:

$fdate = $request->Fdate;
$tdate = $request->Tdate;
$datetime1 = strtotime($fdate); // convert to timestamps
$datetime2 = strtotime($tdate); // convert to timestamps
$days = (int)(($datetime2 - $datetime1)/86400); // will give the difference in days , 86400 is the timestamp difference of a day

Benutzeravatar von rahul modi
rahul modi

$from=Carbon::now()->subDays(5)->toDateString();

$current=Carbon::now()->toDateString();

$peoples= People::whereBetween('joiningdate',array($diff,$current))->get();

  • Sie müssen erklären, warum Ihre Antwort die ursprüngliche Frage anspricht. Siehe stackoverflow.com/help/how-to-answer

    – Bob Dalgleish

    28. Januar 2020 um 13:36 Uhr

Benutzeravatar von AhsanRao
AhsanRao

// get from and throung date
$from_date = Carbon::parse(date('Y-m-d', strtotime('2022-03-10'))); 
$through_date = Carbon::parse(date('Y-m-d', strtotime('2022-03-12'))); 
    
// get total number of minutes between from and throung date
$shift_difference = $from_date->diffInDays($through_date);

// will output $shift_difference = 2

  • Sie müssen erklären, warum Ihre Antwort die ursprüngliche Frage anspricht. Siehe stackoverflow.com/help/how-to-answer

    – Bob Dalgleish

    28. Januar 2020 um 13:36 Uhr

Benutzeravatar von Labhansh Satpute
Labhansh Satpute

Ich habe diese Methode verwendet und sie funktioniert bei mir einwandfrei. Wenn Sie das Geburtsdatum mit dem angeforderten Alter verifizieren möchten, verwenden Sie es.

$date_of_birth = Carbon::parse($request->input('student_dob'));
$current_date = Carbon::now();

if ($current_date->diffInYears($date_of_birth) != $request->input('student_age')) {
    return response(['status' => false, 'error' => [
        'student_dob' => ['date of birth not matched with age']
    ]], 500);
}

1444850cookie-checkTage zwischen zwei Daten in Laravel finden [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy