2011-02-08 8 views
7

PHP Class DateInterval tiene una propiedad "días". Según el manual, devuelve "Número total de días que abarca el intervalo. Si esto no se conoce, los días serán FALSOS".PHP `DateTime :: days` devuelve basura?

En mi caso el código:

$d = new DateInterval('P1Y'); 
echo $d->days; 

vuelve -99999

y un código como este

$a = DateTime::createFromFormat("d.m.Y", "01.01.2010"); 
$b = DateTime::createFromFormat("d.m.Y", "03.01.2010"); 

$d = $b->diff($a); 
echo $d->days; 

vuelve 6015

¿He entendido mal algo?

Respuesta

7

DateInterval está libre de errores en la plataforma de Windows. Ver bug #51183. La respuesta oficial parece ser "usar versiones de VC9 en lugar de ahora".

+0

Confirmando eso. – Mchl

+0

ouch. eso es asqueroso. – Spudley

+2

El error fue reportado hace un año y lo etiquetaron como "no lo arreglarán" porque "No es algo que podamos arreglar fácilmente". ¿Están enfermos? – 30thh

2

Acabo de ejecutar sus ejemplos y deberían funcionar. Específicamente llegué:

$d = new DateInterval('P1Y'); 
    var_dump($d->days); 
    // result: int 0 


    $a = DateTime::createFromFormat("d.m.Y", "01.01.2010"); 
    $b = DateTime::createFromFormat("d.m.Y", "03.01.2010"); 

    $d = $b->diff($a); 
    var_dump($d->days); 
    // result: int 2 

estoy corriendo XAMPP para Linux 1.7.3a con PHP 5.3.1 en Linux Mint 10.

+3

Probé en Windows PHP 5.3.5 (recién actualizado ayer). ¿Solo problema de Windows? – 30thh

0

Can u por favor dígame su solución exacta que necesita ...

He utilizado el código abajo,

$interval = new DateInterval('P2Y4DT6H8M'); 

echo $ intervalo-> d;

Da la O/P como 4

si uso como este,

$interval = new DateInterval('P2Y'); 

echo $interval->d; 

da O/P como 0

por lo que volver al día ha dado en Dateinterval() de lo contrario, devolverá cero ..

U dime su requerimiento exacto t por favor .......... :)

+0

No hablo de "-> d", sino de "-> días". Según el manual, debe ser un número total de días, pero no es ... al menos no en Windows. – 30thh

Cuestiones relacionadas