Si tengo un par de cadenas $ startDate y $ endDate que están configuradas (por ejemplo) "2011/07/01" y "2011/07/17" (es decir, el 1 de julio de 2011 y el 17 de julio de 2011). ¿Cómo contaría los días desde la fecha de inicio hasta la fecha de finalización? En el ejemplo dado, serían 17 días.¿Cómo contar días entre dos fechas en PHP?
Respuesta
Esta es la forma en bruto para hacerlo
$startTimeStamp = strtotime("2011/07/01");
$endTimeStamp = strtotime("2011/07/17");
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400; // 86400 seconds in one day
// and you might want to convert to integer
$numberDays = intval($numberDays);
No funcionará correctamente cuando tenga fechas locales que incluyan una conmutación de horario de ahorro diurno, porque en esas fechas tiene días con 23 o 25 horas. –
Gracias.Parece que funciona para mí. – cannyboy
En realidad, dice 16 días para esas fechas. ¿Debo hacer que las fechas ignoren el horario de verano? – cannyboy
PHP tiene una función date_diff() para hacer esto.
Use DateTime::diff
(también conocido como date_diff
):
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
O:
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
entonces se puede obtener el intervalo como un entero llamando $interval->days
.
Eso no parece funcionar con mis cadenas iniciales de "2011/07/01" y "2011/07/17" ... "Llamar a función indefinida date_diff() .. ". Estoy usando PHP 5.2.10 – cannyboy
Según la documentación (vinculada en la parte superior), esto es PHP> = 5.3.0. Para la próxima vez, incluya la versión de PHP en su pregunta. – wuputah
solo funciona si no tiene un horario en su horario. De lo contrario, puede devolver de 1 a 2 días a unos pocos – Dukeatcoding
Ninguna de las soluciones que funcionó para mí. Para aquellos que todavía están en PHP 5.2 (DateTime :: diff se introdujo en 5.3), esta solución funciona:
function howDays($from, $to) {
$first_date = strtotime($from);
$second_date = strtotime($to);
$offset = $second_date-$first_date;
return floor($offset/60/60/24);
}
<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
?>
En caso de que su DateTime tiene también horas: minutos: segundos y todavía quieren tener el número de días ..
/**
* Returns the total number of days between to DateTimes,
* if it is within the same year
* @param $start
* @param $end
*/
public function dateTimesToDays($start,$end){
return intval($end->format('z')) - intval($start->format('z')) + 1;
}
Si desea conocer el número de días (si lo hay), el número de horas (si lo hay), minutues (si existe) y segundo, puede hacer lo siguiente:
$previousTimeStamp = strtotime("2011/07/01 21:12:34");
$lastTimeStamp = strtotime("2013/09/17 12:34:11");
$menos=$lastTimeStamp-$previousTimeStamp;
$mins=$menos/60;
if($mins<1){
$showing= $menos . " seconds ago";
}
else{
$minsfinal=floor($mins);
$secondsfinal=$menos-($minsfinal*60);
$hours=$minsfinal/60;
if($hours<1){
$showing= $minsfinal . " minutes and " . $secondsfinal. " seconds ago";
}
else{
$hoursfinal=floor($hours);
$minssuperfinal=$minsfinal-($hoursfinal*60);
$days=$hoursfinal/24;
if($days<1){
$showing= $hoursfinal . "hours, " . $minssuperfinal . " minutes and " . $secondsfinal. " seconds ago";
}
else{
$daysfinal=floor($days);
$hourssuperfinal=$hoursfinal-($daysfinal*24);
$showing= $daysfinal. "days, " .$hourssuperfinal . " hours, " . $minssuperfinal . " minutes and " . $secondsfinal. " seconds ago";
}}}
echo $showing;
podría utilizar el mismo lógica si quieres agregar meses y años.
Una manera sencilla de contar decir,
$currentdate = date('Y-m-d H:i:s');
$after1yrdate = date("Y-m-d H:i:s", strtotime("+1 year", strtotime($data)));
$diff = (strtotime($after1yrdate) - strtotime($currentdate))/(60 * 60 * 24);
echo "<p style='color:red'>The difference is ".round($diff)." Days</p>";
Puede utilizar date_diff
para calcular la diferencia entre dos fechas:
$date1 = date_create("2013-03-15");
$date2 = date_create("2013-12-12");
$diff = date_diff($date1 , $date2);
echo $diff->format("%R%a days");
$date1 = date_create("2017-04-15");
$date2 = date_create("2017-05-18");
//difference between two dates
$diff = date_diff($date1,$date2);
//count days
echo 'Days Count - '.$diff->format("%a");
- 1. Días entre dos fechas en Python
- 2. Contabilizar días de trabajo entre dos fechas
- 3. Días, horas, minutos, segundos entre dos fechas
- 4. Número de días entre dos fechas
- 5. Diferencia de días entre dos fechas
- 6. ¿Cómo encontrar el número de días entre dos fechas
- 7. Número de días entre dos fechas en Joda-Time
- 8. ¿Cálculo de cuántos días hay entre dos fechas en DB2?
- 9. días Contar por año
- 10. Número de días entre dos fechas: ANSI SQL
- 11. Java, calcular el número de días entre dos fechas
- 12. iPhone - obtenga el número de días entre dos fechas
- 13. ¿Encontrar diferencia de días entre dos fechas (excluyendo días de fin de semana) en Python?
- 14. Calcula la diferencia entre dos fechas en PHP
- 15. ¿Cómo encuentro la diferencia horaria entre dos fechas en PHP?
- 16. Calcular el número de días hábiles entre dos días
- 17. fechas consistentemente dos días de descanso
- 18. Diferencia entre dos fechas en Python
- 19. ¿Contar meses entre dos marcas de tiempo en postgresql?
- 20. Duración entre dos fechas en Groovy
- 21. Cómo generar una fecha aleatoria entre dos fechas usando php?
- 22. la sustracción de dos fechas en php
- 23. ¿Cómo obtener el número de días entre dos fechas en Java?
- 24. ¿Cómo obtener el número de días de diferencia entre dos fechas en mysql?
- 25. ¿Cómo calculo el número de días, menos los domingos, entre dos fechas en C#?
- 26. ¿Cómo encontrar el número de días entre dos fechas en Java o Groovy?
- 27. ¿Cómo puedo calcular el número de días entre dos fechas en Perl?
- 28. ¿Cómo puedo comparar dos fechas, devolver un número de días
- 29. Matriz de fechas entre dos fechas
- 30. PHP - Cómo contar los 60 días desde la fecha complemento
ver http://stackoverflow.com/questions/2040560/finding-the-number-of-days-between-two-dates –