summaryrefslogtreecommitdiff
path: root/ext/date/tests/date_diff.phpt
blob: d5cc58271c511dfdd45e75ea1b34936b2ef655a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
--TEST--
Extensive test for date_diff().
--SKIPIF--
<?php
if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
?>
--INI--
date.timezone=UTC
--FILE--
<?php
$ok = 0;
define( 'COUNT', 120 );
$d0 = new DateTime('2009-11-20');
for ( $i = 0; $i < COUNT * 12; $i++ )
{
    $d = clone $d0;
    $dates[$i] = $d->add( new DateInterval( "P{$i}D" ) );
}

for ( $i = 0; $i < COUNT; $i++)
{
//	echo $dates[$i]->format( "Y-m-d\n" );
    for ( $j = 0; $j < COUNT * 12; $j++)
    {
        $diff = date_diff( $dates[$i], $dates[$j] );
        /*
        printf( "\t%s %s %3d %s\n",
            $dates[$i]->format( 'Y-m-d' ),
            $dates[$j]->format( 'Y-m-d' ),
            $diff->format( '%a' ),
            $diff->format( '%y-%m-%d' )
        );
        */

        $current = clone $dates[$i];
        $int = new DateInterval( $diff->format( 'P%yY%mM%dD' ) );
        if ( $current > $dates[$j] )
        {
            $current->sub( $int );
        }
        else
        {
            $current->add( $int );
        }
        if ( $current != $dates[$j] )
        {
            echo "FAIL: ",
                $dates[$i]->format( 'Y-m-d' ), " + ",
                $int->format( '%y-%m-%d' ), " = ",
                $current->format( 'Y-m-d' ), " (",
                $dates[$j]->format( 'Y-m-d' ), ")\n";
        }
        else
        {
            $ok++;
        }
    }
}

echo $ok, "\n";
?>
--EXPECT--
172800