downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

DateTime::format> <DateTime::createFromFormat
Last updated: Fri, 20 Nov 2009

view this page in

DateTime::diff

(PHP 5 >= 5.3.0)

DateTime::diffReturns the difference between two DateTime objects

Description

public DateInterval DateTime::diff ( DateTime $datetime [, bool $absolute ] )

Returns the difference between two DateTime objects.

Parameters

datetime

The date to compare to.

absolute

Whether to return absolute difference. Defaults to FALSE.

Return Values

The difference between two dates.



DateTime::format> <DateTime::createFromFormat
Last updated: Fri, 20 Nov 2009
 
add a note add a note User Contributed Notes
DateTime::diff
andarin2 at yahoo dot com
18-Nov-2009 10:32
The DateInterval format unfortunately leads to inconsitencies:

<?php
$start
= new DateTime('2009-01-01 00:00:00'); // 31 days
$time_span = $start->diff(new DateTime('2009-02-01 00:00:00'));
var_dump($time_span); // returns '1 month'

$start = new DateTime('2009-02-01 00:00:00'); //28 days
$time_span = $start->diff(new DateTime('2009-03-01 00:00:01'));
var_dump($time_span); // returns '1 month'
?>

Of course it is possible to guess what does DateTime mean for a month, but in such case the invoking program should take care of month lengths and leap years (imagine counting days between dates years appart) - DateTime class is supposed to do that. In my opinion this function should return a value in seconds (or any other stable unit). Afterwards the program would have to convert the value as needed, but the value would be exact.
Anonymous
04-Aug-2009 12:17
You don't need to calculate the exact difference if you just want to know what date comes earlier:

<?php

date_default_timezone_set
('Europe/Madrid');

$d1 = new DateTime('1492-01-01');
$d2 = new DateTime('1492-12-31');

var_dump($d1 < $d2);
var_dump($d1 > $d2);
var_dump($d1 == $d2);

?>

bool(true)
bool(false)
bool(false)
thinice at gmail dot com
17-Jul-2009 07:29
Some stuff to help you get started:

<?php
// See what's inside
$oDT = new DateTime();
var_dump($oDT);
?>

To do a date difference:

<?php
$oDT
= new DateTime(); //Sets the object to now
$oDTDiff = $oDT->diff(new DateTime('2009-08-18 00:00:01'));
var_dump($oDTDiff);
echo
"Days of difference: ". $oDTDiff->days;
?>

DateTime::format> <DateTime::createFromFormat
Last updated: Fri, 20 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites