Bug #77571 [Com]: DateTime's diff DateInterval incorrect in timezones from UTC+01:00 to UTC+12:00

From: Date: Tue, 12 Feb 2019 14:57:33 +0000
Subject: Bug #77571 [Com]: DateTime's diff DateInterval incorrect in timezones from UTC+01:00 to UTC+12:00
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-219529@lists.php.net to get a copy of this message
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


Thread (11 messages)

« previous php.bugs (#219529) next »