settimezone - timezone utc php
¿Cómo encuentro la diferencia horaria entre dos fechas en PHP? (9)
Tengo dos fechas, formateadas como "Ymd H: i: s". Necesito comparar estas dos fechas y descubrir la diferencia horaria.
Como complemento de la respuesta aceptada, me gustaría recordarle que /DateTime::diff
está disponible.
$f = ''Y-m-d H:i:s'';
$d1 = /DateTime::createFromFormat($date1, $f);
$d2 = /DateTime::createFromFormat($date2, $f);
/**
* @var /DateInterval $diff
*/
$diff = $d2->diff($d1);
$hours = $diff->h + ($diff->days * 24); // + ($diff->m > 30 ? 1 : 0) to be more precise
/DateInterval
Documentación de /DateInterval
.
El problema es que al usar estos valores el resultado es 167 y debería ser 168:
$date1 = "2014-03-07 05:49:23";
$date2 = "2014-03-14 05:49:23";
$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 / 60;
Esto se debe al ahorro de tiempo del día. Horario de verano (Estados Unidos) 2014 comenzó a las 2:00 a.m. del domingo 9 de marzo.
Perdió una hora durante el período de $ date1 = "2014-03-07 05:49:23" a $ date2 = "2014-03-14 05:49:23";
Puede convertirlos a marcas de tiempo e ir desde allí:
$hourdiff = round((strtotime($time1) - strtotime($time2))/3600, 1);
Dividir por 3600 porque hay 3600 segundos en una hora y usar round()
para evitar tener muchos decimales.
Puede usar strtotime()
para analizar sus cadenas y hacer la diferencia entre las dos.
Recursos:
Puede usar la interfaz DateTime también -
$d1= new DateTime("06-08-2015 01:33:26pm");
$d2= new DateTime("06-07-2015 10:33:26am");
$interval= $d1->diff($d2);
echo ($interval->days * 24) + $interval->h;
Puedes intentar esto:
$dayinpass = "2016-09-23 20:09:12";
$today = time();
$dayinpass= strtotime($dayinpass);
echo round(abs($today-$dayinpass)/60/60);
$date1 = date_create(''2016-12-12 09:00:00'');
$date2 = date_create(''2016-12-12 11:00:00'');
$diff = date_diff($date1,$date2);
$hour = $diff->h;
$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 / 60;