ID:               45545
 Comment by:       tj at systisoft dot com
 Reported By:      tj at systisoft dot com
 Status:           Assigned
 Bug Type:         Feature/Change Request
 Operating System: All
 PHP Version:      5.3CVS-2008-07-17 (CVS)
 Assigned To:      derick
 New Comment:

Just an example when whis is awkward:

I get an offest from a time zone an have to add it to a DateTime. The
offset was taken from the time zone via getOffset(). Lets assume the
offset is positive (easy test if not).

$d->add(new DateInterval('PT' . $offset . 'S')));

will fail once the offset is over 9999 seconds.

While it is not really necessary to have the limit removed, it is just
awkward for a user that he always has to care about this limit when
handling durations he gets from sources he can not control. There will
always be a limit you have to take care of but a limit of 9999 seconds
is reached very fast, if you get durations in seconds.


Previous Comments:
------------------------------------------------------------------------

[2008-07-17 17:22:42] [EMAIL PROTECTED]

I don't think the limit is really needed - but then again, I also don't
think it matters much that you can't have periods of > 1000seconds.

------------------------------------------------------------------------

[2008-07-17 16:24:50] tj at systisoft dot com

If you decide to keep the limit you should move that to documentation I
think :).

------------------------------------------------------------------------

[2008-07-17 16:17:58] tj at systisoft dot com

Description:
------------
If you want to create a DateInterval of 36000 seconds (10 hours) the
creation will fail because you have a limit of 4 chars in the format
accepted by the constructor.

Up to days you can do the "carry over" calculation for yourself (But
not for months or years), but if you get an offset in seconds from a
source you cannot control it would be nice if you could just do:

$date->add(new DateInterval('PT' . $seconds . 'S'));

Now you have to check if seconds exceeds the limit an if it exceeds the
limit you have to recalculate yourself. That is not nice from a user
point of view.

Reproduce code:
---------------
$d = new DateTime('2008-01-01 10:00:00 UTC');
$d->add(new DateInterval('PT36000S'));
echo $d->format(DATE_ISO8601), PHP_EOL;

Expected result:
----------------
2008-01-01T20:00:00+0000

Actual result:
--------------
PHP Fatal error:  Uncaught exception 'Exception' with message
'DateInterval::__construct(): Unknown or bad format (PT36000S)' in
/Users/tobias/test.php:2
Stack trace:
#0 /Users/tobias/test.php(2): DateInterval->__construct('PT36000S')
#1 {main}
  thrown in /Users/tobias/test.php on line 2

Fatal error: Uncaught exception 'Exception' with message
'DateInterval::__construct(): Unknown or bad format (PT36000S)' in
/Users/tobias/test.php:2
Stack trace:
#0 /Users/tobias/test.php(2): DateInterval->__construct('PT36000S')
#1 {main}
  thrown in /Users/tobias/test.php on line 2


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=45545&edit=1

Reply via email to