Kiran Rai Chamling
Tengo fechas. Ahora, necesito encontrar la diferencia entre estos dos para más cálculos.
Intenté de diferentes maneras pero no puedo solucionar los problemas. ¿Alguien puede decirme la mejor manera de hacerlo?
mi código es:
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');
}
Si puedo obtener los días, puedo insertarlo en la tabla de hojas.
Abhay Maurya
No necesita Carbon, puede hacerlo usando PHP simple. Lo mejor es usar la forma PHP OOP. Como esto:
$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
PD: DateTime no es una función, es una clase, así que no olvides agregar: use DateTime;
en la parte superior de su controlador para que pueda hacer referencia a la clase raíz correcta, o usar \DateTime()
en cambio al hacer su instancia.
-
Estoy escribiendo este código en un controlador. Este código arroja un error: no se encontró la clase ‘App\Http\Controllers\Admin\DateTime’. DateTime funciona con php.
– Kiran Rai Chamling
3 de enero de 2017 a las 13:25
-
Agregar
use DateTime;
en la parte superior del controlador y vuelve a intentarlo.– Abhay Maurya
3 de enero de 2017 a las 13:27
-
Probé eso y funcionó!. Antes, estaba usando DateTime of Carbon. No me ayudó. Gracias
– Kiran Rai Chamling
03/01/2017 a las 13:30
-
@Kiran Rai Chamling, marque la respuesta como aceptada si le ayudó a cerrar este hilo. Gracias
– Abhay Maurya
3 de enero de 2017 a las 13:31
-
En caso de que algo haya salido mal, puede agregar
try { } catch (\Exception $e){}
en tuDateTime
código. PorqueDateTime
la clase tiraríaException
cuando ocurrió el error. Gracias a PHPStorm por recordarme.– ibnɘꟻ
24 de enero de 2020 a las 3:16
marta de arroz
$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
HadiNiazi
¿Por qué no usar Carbon Helper para obtener la fecha exacta?
$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);
Cualquiera que use la versión de PHP $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
raul modi
$from=Carbon::now()->subDays(5)->toDateString();
$current=Carbon::now()->toDateString();
$peoples= People::whereBetween('joiningdate',array($diff,$current))->get();
-
Debe proporcionar una explicación de por qué su respuesta aborda la pregunta original. Consulte stackoverflow.com/help/how-to-answer
– Bob Dalgliesh
28 de enero de 2020 a las 13:36
Ahsan Rao
// 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
-
Debe proporcionar una explicación de por qué su respuesta aborda la pregunta original. Consulte stackoverflow.com/help/how-to-answer
– Bob Dalgliesh
28 de enero de 2020 a las 13:36
Labhansh Sapute
Utilicé este método y está funcionando correctamente para mí. Si desea verificar la fecha de nacimiento con la edad solicitada, utilícela.
$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);
}
La respuesta real a esta pregunta es hacer simplemente
$start = Carbon::parse($fdate);
y$end = Carbon::parse($tdate);
Al usar elCarbon::format()
función obtuvo una cadena, por lo que habría recibido un error como “Llamar a la función miembro diffInDays () en un no objeto”– miken32
5 de diciembre de 2022 a las 23:14