Dada una fecha determinada, ¿cuál es la forma más fácil de determinar cuántos días hasta esa fecha (en PHP)? Estoy tratando de construir un widget de cuenta atrás, ¡Gracias!¿Cuántos días hay hasta la fecha X-Y-Z?
Respuesta
<?php
$cdate = mktime(0, 0, 0, 12, 31, 2009, 0);
$today = time();
$difference = $cdate - $today;
if ($difference < 0) { $difference = 0; }
echo "There are ". floor($difference/60/60/24)." days remaining";
?>
No trate las fechas como números enteros. Use su base de datos, que tiene un buen soporte para lidiar con calendarios/tiempo.
select datediff("2009-11-12", now())
marca de tiempo unix FTW – andufo
PHP 5.3 ha introducido la clase DateTime que implementa una función 'diff'. Ver http://www.php.net/manual/en/datetime.diff.php
Ampliando la respuesta de schnaader, aquí es una función de una sola línea que lleva una cadena de fecha como parámetro, pero sólo devuelve el número de días:
<?php
function days_until($date){
return (isset($date)) ? floor((strtotime($date) - time())/60/60/24) : FALSE;
}
?>
Días minutos y segundos formato:
// current time
$today = new DateTime(format_date(time(), 'custom', 'd M Y H:i:s'));
// date to which we want to compare (A Drupal field in my case).
$appt = new DateTime(format_date($yourdate_is_timestamp, 'custom', 'd M Y H:i:s'));
// Months
$months_until_appt = $appt->diff($today)-> m;
// days
$days_until_appt = $appt->diff($today)-> days;
// hours
$hours_until_appt = $appt->diff($today)-> h;
// minutes
$minutes_until_appt = $appt->diff($today)-> i;
// seconds
$seconds_until_appt = $appt->diff($today)-> s;
echo 'days until: ' . $days_until_appt;
echo 'hours until: ' . $hours_until_appt;
echo 'minutes until: ' . $minutes_until_appt;
echo 'seconds until: ' . $seconds_until_appt;
'DateTime' clase FTW –
Según http://php.net/manual/en/ref.datetime.php' -> days' (por ejemplo) no es una clase válida método. ¿Puedes modificar tu código para usar '-> formato ('d')', '-> formato ('m')', etc. por lo que es más claro para quienes lo visitan? – Wes
Para el registro - Actualicé para el uso de 'DateTime' - no puedo creer la respuesta aceptada utilizando' DateTime' utilizado en la solución. – Wes
Acabo de encontrar esto en mi código para una aplicación en vivo donde el sistema considera incorrectamente hoy y mañana como hoy. Acabamos de entrar en el horario de verano británico y esto ha causado un problema con nuestra aplicación.
ahora estoy utilizando lo siguiente, que me está dando el resultado correcto:
function days_away_to($dt) {
$mkt_diff = strtotime($dt) - time();
return floor($mkt_diff/60/60/24) + 1; # 0 = today, -1 = yesterday, 1 = tomorrow
}
Por supuesto, el uso de la clase DateTime es la mejor solución va hacia adelante ...
Este es exactamente el mismo código que [ya se publicó aquí] (http://stackoverflow.com/a/8807610/447356) y acaba de cambiar los nombres de las variables. -1 por intentar obtener un representante para el trabajo de otras personas y perder el tiempo. –
Gracias SW pero desafortunadamente esa solución no funcionó para mí: me está dando 0 para 2014-03-31 diciéndome que esa es la fecha de hoy (es 30 de marzo ahora en el Reino Unido).He agregado +1, que me lo corrige. –
Por lo tanto, debe resaltar esto en su publicación al vincular a esa otra respuesta y explicar que acaba de agregar 1 para que funcione. Por favor haz la edición y házmelo saber. –
- 1. Agregar días hasta la fecha en ActionScript
- 2. Php obtener cuántos días y horas quedan de una fecha
- 3. 30 días hasta la fecha (dd/mm/aa)
- 4. ¿Cálculo de cuántos días hay entre dos fechas en DB2?
- 5. Fecha relativa de Bash (x días atrás)
- 6. cadena bash hasta la fecha
- 7. añadiendo días a una fecha
- 8. ¿Cuál fue la fecha hace 180 días?
- 9. Devuelve la fecha actual más 7 días
- 10. Javascript restando días de la fecha
- 11. Cómo analizar la cadena de fecha hasta la fecha?
- 12. Días de compras hasta el contador de Navidad jQuery
- 13. Javascript Convertir Hasta la fecha UTC
- 14. adición de 30 minutos hasta la fecha
- 15. Convert String Hasta la fecha en PHP
- 16. Convertir milisegundos hasta la fecha (en Excel)
- 17. Python convertir larga hasta la fecha
- 18. Diferencia de fecha en php en días?
- 19. la conversión de la cadena hasta la fecha en mongodb
- 20. ¿Cómo puedo averiguar la fecha de caducidad de una contraseña de ADUser o días restantes hasta que caduque la contraseña?
- 21. ¿Cuántos estilos de escritura hay en C?
- 22. joda time - agregar días de la semana a la fecha
- 23. ¿Cómo agregar días a la fecha actual en javascript?
- 24. MySQL agregar días a una fecha
- 25. Agregar días a una fecha en Java
- 26. R Agregar los días a una fecha
- 27. PHP Fecha Función Siete días anterior
- 28. Adición días a $ Fecha en PHP
- 29. ¿Cuántos dígitos hay en esta base?
- 30. ¿Cómo llegar 30 días antes de la fecha actual?
gracias por ¡esta! Resolvió mi problema :) – yanike
Esto realmente depende de su definición "días hasta". Por ejemplo, este fragmento me dice que la víspera de Año Nuevo está a 34 días, y wolfram alpha, google, siri y casi todos los demás sitios que busco me dicen 35 días. FWIW – AlBeebe
@AlBeebe luego solo agregue +1. ¿Qué hay de difícil en eso? – Devfly