Bug #80974 [Com]: Wrong diff between 2 dates in different timezones

From: Date: Mon, 16 Aug 2021 19:37:32 +0000
Subject: Bug #80974 [Com]: Wrong diff between 2 dates in different timezones
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-235883@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80974&edit=1

 ID:                 80974
 Comment by:         kylekatarnls at gmail dot com
 Reported by:        kylekatarnls at gmail dot com
 Summary:            Wrong diff between 2 dates in different timezones
 Status:             Closed
 Type:               Bug
 Package:            Date/time related
 Operating System:   Ubuntu
 PHP Version:        master-Git-2021-04-21 (Git)
 Assigned To:        derick
 Block user comment: N
 Private report:     N

 New Comment:

Hello, sorry derick but here the fix caused an other regression:

Try the following code:
-----------------------
<?php

$d1 = new DateTimeImmutable('2014-07-08 15:20', new
DateTimeZone('America/Toronto'));
$d2 = $d1->modify('1 day');

var_dump($d1->setTimezone(new DateTimeZone('UTC'))->diff($d2)->days);
var_dump($d1->diff($d2)->days);
-----------------------

days is 1 for both in PHP < 8.1 => correct since $d2 is $d1 + 1 day and there is
no DST there, so I expect to always get 1 with any timezone.

days is 0 since 8.1.0beta3 => very likely a bug.

Did you check my PR?
https://github.com/derickr/timelib/pull/110/files


Previous Comments:
------------------------------------------------------------------------
[2021-08-08 12:42:57] derick@php.net

The fix for this bug has been committed.
If you are still experiencing this bug, try to check out latest source from https://github.com/php/php-src and re-test.
Thank you for the report, and for helping us make PHP better.

For 8.1.0beta3

------------------------------------------------------------------------
[2021-04-26 08:22:08] corey dot taylor dot fl at gmail dot com

I assume this is related since it was closed with the large patch from derick.

https://bugs.php.net/bug.php?id=79452

------------------------------------------------------------------------
[2021-04-22 09:50:36] cmb@php.net

The following pull request has been associated:

Patch Name: Fix #80974: Wrong diff between 2 dates in different timezones
On GitHub:  https://github.com/php/php-src/pull/6896
Patch:      https://github.com/php/php-src/pull/6896.patch

------------------------------------------------------------------------
[2021-04-21 22:00:40] kylekatarnls at gmail dot com

Description:
------------
In PHP < 8.1, comparing 2 date-times from different timezones would consider the real moment they
represent to return the diff, which is completly relevant. But it's no longer true (sounds like
introduced by 091c0920b9db057a54dc43ece6e864bce6818d5e).

Test script:
---------------
$dtToronto = new DateTime('2012-01-01 00:00:00.000000 America/Toronto');
$dtVancouver = new DateTime('2012-01-01 00:00:00.000000 America/Vancouver');

echo $dtVancouver->diff($dtToronto)->format('%h');

Expected result:
----------------
3

Actual result:
--------------
0


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



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


Thread (8 messages)

« previous php.bugs (#235883) next »