Edit report at https://bugs.php.net/bug.php?id=77571&edit=1
ID: 77571
Comment by: techouse at gmail dot com
Reported by: techouse at gmail dot com
Summary: DateTime's diff DateInterval incorrect in timezones
from UTC+01:00 to UTC+12:00
Status: Open
Type: Bug
Package: Date/time related
Operating System: macOS 10.14.3, Ubuntu 18.04
PHP Version: 7.3.1, 7.2.10
Block user comment: N
Private report: N
New Comment:
My work colleague found out that this feature worked correctly in PHP 5.3.0, 5.3.1 and 5.3.2,
however in 5.3.3 we can already observe this bug in action. Check for yourself https://3v4l.org/cupQV
Previous Comments:
------------------------------------------------------------------------
[2019-02-12 14:56:32] techouse at gmail dot com
Changed the title to have more meaning
------------------------------------------------------------------------
[2019-02-07 08:44:40] techouse at gmail dot com
I simply copied this test https://github.com/php/php-src/blob/master/ext/date/tests/DateInterval_format.phpt
and changed the timezone from UTC to Europe/Paris and the test fails.
--TEST--
DateInterval::format() with timezone, except %a
--DESCRIPTION--
%a is covered in a separate test.
Don't want an XFAIL here to cause confusion if a real bug comes up.
--CREDITS--
Daniel Convissor <danielc@php.net>
# TestFest 2010 BKTK
--SKIPIF--
<?php if (!method_exists('DateInterval', 'format')) die("skip: method
doesn't exist"); ?>
--FILE--
<?php
//date_default_timezone_set('UTC');
date_default_timezone_set('Europe/Paris');
$date1 = new DateTime('2000-01-01 00:00:00');
$date2 = new DateTime('2001-03-04 04:05:06');
$interval = $date1->diff($date2);
echo $interval->format('Y=%Y') . "\n";
echo $interval->format('M=%M') . "\n";
echo $interval->format('D=%D') . "\n";
echo $interval->format('H=%H') . "\n";
echo $interval->format('I=%I') . "\n";
echo $interval->format('S=%S') . "\n";
echo $interval->format('R=%R') . "\n";
echo $interval->format('y=%y') . "\n";
echo $interval->format('m=%m') . "\n";
echo $interval->format('d=%d') . "\n";
echo $interval->format('h=%h') . "\n";
echo $interval->format('i=%i') . "\n";
echo $interval->format('s=%s') . "\n";
echo $interval->format('r=%r') . "\n";
echo "\n";
$interval = $date2->diff($date1);
echo $interval->format('inverted R=%R') . "\n";
echo $interval->format('inverted r=%r') . "\n";
echo "\n";
echo $interval->format('%=%%') . "\n";
// Invalid valid format character does not raise warnings.
echo $interval->format('x=%x') . "\n";
?>
--EXPECT--
Y=01
M=02
D=03
H=04
I=05
S=06
R=+
y=1
m=2
d=3
h=4
i=5
s=6
r=
inverted R=-
inverted r=-
%=%
x=%x
------------------------------------------------------------------------
[2019-02-07 01:19:40] a at b dot c dot de
May also be related to bug #76374
------------------------------------------------------------------------
[2019-02-06 08:55:48] techouse at gmail dot com
Might be related to https://bugs.php.net/bug.php?id=52480
------------------------------------------------------------------------
[2019-02-06 08:22:05] techouse at gmail dot com
Better summary
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=77571
--
Edit this bug report at https://bugs.php.net/bug.php?id=77571&edit=1