PDA

Ver la Versión Completa : Problemas con Date y String


Pancholp1986
18-03-2011, 18:08:14
Buenas tardes,
bien tengo el siguiente problema, tengo que calcular la diferencia en dias entre dos fechas. El problema en sí es que una fecha la tengo en formato Date y la otra en String.
Lo que pense que es más cómodo es pasar la que es Date a String y después hacerlo, pero se me complica mucho. Entonses pensé en pasar el String a Date pero no encuentro una manera clara de hacerlo.
Alguna idea o ayuda??? Gracias ...

$enDate = "2010-02-13";
$enString = '170210'; // dd/mm/aa

Neftali [Germán.Estévez]
18-03-2011, 18:46:55
...tengo que calcular la diferencia en dias entre dos fechas. El problema en sí es que una fecha la tengo en formato Date y la otra en String.

...
$enDate = "2010-02-13";
$enString = '170210'; // dd/mm/aa

Para eso Delphi posee la función DaysBetween (docuentacion (http://docwiki.embarcadero.com/VCL/en/DateUtils.DaysBetween)) que te da la diferencia en días entre 2 fechas.


...Lo que pense que es más cómodo es pasar la que es Date a String y después hacerlo

No hombre, al contrario; Pasa la de String a Fecha y luego ejecutas la función anterior para calcular la diferencia.

1) Corta la cadena en 3 trozos con la función Copy (documentacion (http://docwiki.embarcadero.com/VCL/en/System.Copy)).
2) Crea la fecha utilizando los 3 numeros y la función EncodeDate (documentacion (http://docwiki.embarcadero.com/VCL/en/SysUtils.EncodeDate)).
3) Aplica la funcion DaysBetween.

roman
18-03-2011, 18:52:25
php :rolleyes:

// Saludos

Neftali [Germán.Estévez]
18-03-2011, 18:54:41
php :rolleyes:

:o:o:o

Si es que uno a estas horas ya va a piñon...

Mil discupas.

Ahora mismo apago el orenador y me voy para casa porque estoy "que no doy pie con bola..." :(

roman
18-03-2011, 19:22:23
tengo que calcular la diferencia en dias entre dos fechas.

[...]

$enDate = "2010-02-13";
$enString = '170210'; // dd/mm/aa

Con PHP 5.3:


<?php
$fecha1 = DateTime::createFromFormat('Y-m-d', '2010-02-13');
$fecha2 = DateTime::createFromFormat('dmy', '170210');

$intervalo = $fecha1->diff($fecha2);

echo 'Días entre las dos fechas: ' . $intervalo->d;
?>


// Saludos

Pancholp1986
18-03-2011, 19:27:13
Bueno, fuera de joda estube horas buscando y no encontré nada. Acabo de encontrar una posible solución que me resolvió mi problema.
El String lo convierto a Date:
$d = substr($stringFecha,0,2);
$m = substr($stringFecha,2,2);
$a = substr($stringFecha,4,2);
$a = "20".$a;
$aux = mktime(0,0,0,$m,$d,$a);
$aux = date ("Y-m-d", $aux);
Y luego resto las dos fechas para sacar la diferencia en días e/ ambas:
$j = new DateTime($dateFecha); // ¿?, rarísimo, pero lo tuve que hacer
$aux1 = date_timestamp_get($j);
$dif_seg = $aux1 - $aux ;
$dif = $dif_seg/(60*60*24);

"vualaaaaaaaaaaaa" :P.
Espero que le sirva a alguien en un futuro.
Saludos

Pancholp1986
18-03-2011, 19:34:09
Con PHP 5.3:


<?php
$fecha1 = DateTime::createFromFormat('Y-m-d', '2010-02-13');
$fecha2 = DateTime::createFromFormat('dmy', '170210');

$intervalo = $fecha1->diff($fecha2);

echo 'Días entre las dos fechas: ' . $intervalo->d;
?>


// Saludos
Román te agradesco muchísimo. Tu respuesta parece mucho más confiable que la que fuí armando yo. Voy a probar de la manera en que me lo explicas vos.
Saludos!