Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/01/2013, 06:55
cleguisamon
 
Fecha de Ingreso: diciembre-2012
Mensajes: 33
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Consulta sobre fechas

Cita:
Iniciado por andresdzphp Ver Mensaje
Si dispones de una versión de PHP actualizada (mínimo 5.3) puedes hacer algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $dt1 = new DateTime('14-01-2012');
  4. $dt2 = new DateTime('16-01-2012');
  5. $interval = new DateInterval("P1D");
  6. $dates = new DatePeriod($dt1, $interval, $dt2->add($interval));
  7.  
  8. foreach ($dates as $d) {
  9.     echo $d->format('d-m-Y') . '<br />';
  10. }



o puedes usar las funciones mktime, strtotime. Primero calculas la diferencia de días entre las 2 fechas, luego un bucle for que vaya de cero al número de días y con mktime o strtotime vas sumando los días en el bucle. A ese resultado, le das formato con la función date.

Cualquier duda me avisas.

Saludos.
Hola!! buen dia! Estoy dandole vueltas al asunto y no lo puedo corregir. El ejemplo que me pasaste funciona muy bien... pero cuando trato de adaptarlo no funciona.

El problema es que la fecha de inicio y la fecha de finalizacion deberian ser variables y no dos fechas fijas ya que ambas fechas son ingresadas por los usuarios.
Cuando pruebo el funcionamiento, y por lo que entiendo, me aparece un error en donde me dice algo como que no puede pasar a tiempo un string... o algo asi.. ahi abajo te aparece bien el error y el codigo que puse yo a ver si lo podes mirar... un abrazo!!

Este es el error:
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (30/12/2012) at position 0 (3): Unexpected character' in C:\localhost\control licencias\ver_licencias.php:173 Stack trace: #0 C:\localhost\control licencias\ver_licencias.php(173): DateTime->__construct('30/12/2012') #1 {main} thrown in C:\localhost\control licencias\ver_licencias.php on line 173

Este es el codigo
<?php
$fecha_inicio=$row['fecha_inicio'];
$fecha_fin=$row['fecha_fin'];
$dt1 = new DateTime($fecha_inicio);
$dt2 = new DateTime($fecha_fin);
$interval = new DateInterval("P1D");
$dates = new DatePeriod($dt1, $interval, $dt2->add($interval));

foreach ($dates as $d) {
echo $d->format('d/m/Y') . '<br />';
} ?>

Previamente, se realiza una consulta para traer a la pantalla solamente lo relacionado con un determinado pedido de licencia.