Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Friedrich's avatar

How to compute Total hours in laravel from selected date ranges?

I have this code:

 $day=Tms::where('users_id',$request->user)->whereBetween('day', [$request->first, $request->last])->get();
 $user_time_in=Tms::where('users_id',$request->user)->where('day', $request->first)->value('time_in');
 $user_time_out=Tms::where('users_id',$request->user)->where('day',$request->last)->value('time_out');
if($user_time_in==null){
            $first= new DateTime($request->first.' 00:00:00');
            }else{
                $first= new DateTime($request->first.$user_time_in);
            }
            if($user_time_out==null){
                // dd($request->last.' 00:00:00');
            $last= new DateTime($request->last.' 00:00:00');
            }else{
                $last = new DateTime($request->last.$user_time_out);
            }
            $totalDiff=$last->diff($first);
            $total=$totalDiff->format('%H hours and %I minutes');
            return view('home.admin.tms.calculated_hours')->with(['day'=>$day,'totalHR'=>$total, 'user'=>$users]);

this is my CURRENT result:

//example scenario "this is from user request"
Date 01
Total hours: 10 hours and 3 minutes

Date 02
Total hours: 0 hours and 4 minutes

Date 03
Total hours: 0 hours and 0 minutes

//current result i use variable $date here
Covered Dates:
Date 01
Date 02
Date 03
//here is the computed hours from the selected date ranges
Total hours: 22 hours and 55 minutes

this is my EXPECTED result computing the total hours of every date then sum all values:

//example scenario "this is from user request"
Date 01
Total hours: 10 hours and 3 minutes

Date 02
Total hours: 0 hours and 4 minutes

Date 03
Total hours: 0 hours and 0 minutes

//expected result I use variable $date here
Covered Dates:
Date 01
Date 02
Date 03
//here is the computed hours from the selected date ranges
Total hours: 10 hours and 7 minutes

I think im missing the logic about computing the time in and time out of every dates then add all values

0 likes
3 replies
Friedrich's avatar
Friedrich
OP
Best Answer
Level 1

my solution here is add total hours in database that will be computed when the time out triggers then in by selecting date range I use

  $day=Tms::where('users_id',$request->user)->whereBetween('day', [$request->first, $request->last])->get();
 $users=Tms::where('users_id', $request->user)->take(1)->get();
            $user_time_in=Tms::where('users_id',$request->user)->where('day', $request->first)->value('time_in');
            $user_time_out=Tms::where('users_id',$request->user)->where('day',$request->last)->value('time_out');
 if($user_time_in==null){
            $first= new DateTime($request->first.' 00:00:00');
            }else{
                $first= new DateTime($request->first.$user_time_in);
            }
            if($user_time_out==null){
                // dd($request->last.' 00:00:00');
            $last= new DateTime($request->last.' 00:00:00');
            }else{
                $last = new DateTime($request->last.$user_time_out);
            }
            $totalDiff=$last->diff($first);
            $total=$totalDiff->format('%H hours and %I minutes');
            return view('home.admin.tms.calculated_hours')->with(['day'=>$day,'totalHR'=>$total, 'user'=>$users]);
        }
        return back()->with('message', 'User Not Recorded');

Please or to participate in this conversation.