php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #78452 diff makes wrong in hour for Asia/Tehran
Submitted: 2019-08-24 17:20 UTC Modified: 2019-11-07 11:14 UTC
Votes:2
Avg. Score:4.0 ± 1.0
Reproduced:2 of 2 (100.0%)
Same Version:1 (50.0%)
Same OS:1 (50.0%)
From: hamedzarei dot 7232 at gmail dot com Assigned:
Status: Verified Package: Date/time related
PHP Version: 7.3.11 OS: linux
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2019-08-24 17:20 UTC] hamedzarei dot 7232 at gmail dot com
Description:
------------
Diff between 2 DateTimes makes wrong in hour and create -1
I test some cases and think is about setting timezone

Test script:
---------------
date_default_timezone_set('Asia/Tehran');
$date1 = new \DateTime('2019-09-24 11:47:24');
$date2 = new \DateTime('2019-08-21 12:47:24');

var_dump($date1->diff($date2));

Expected result:
----------------
object(DateInterval)#3 (16) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(1)
  ["d"]=>
  int(2)
  ["h"]=>
  int(23)
  ["i"]=>
  int(0)
  ["s"]=>
  int(0)
  ["f"]=>
  float(0)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(1)
  ["days"]=>
  int(33)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}


Actual result:
--------------
object(DateInterval)#3 (16) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(1)
  ["d"]=>
  int(3)
  ["h"]=>
  int(-1)
  ["i"]=>
  int(0)
  ["s"]=>
  int(0)
  ["f"]=>
  float(0)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(1)
  ["days"]=>
  int(33)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}

Patches

diff_timezone_patch_hamed_01 (last revision 2019-08-24 17:21 UTC by hamedzarei dot 7232 at gmail dot com)

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2019-08-24 17:21 UTC] hamedzarei dot 7232 at gmail dot com
The following patch has been added/updated:

Patch Name: diff_timezone_patch_hamed_01
Revision:   1566667287
URL:        https://bugs.php.net/patch-display.php?bug=78452&patch=diff_timezone_patch_hamed_01&revision=1566667287
 [2019-08-24 17:37 UTC] requinix@php.net
-Summary: diff makes worng in hour +Summary: diff makes wrong in hour for Asia/Tehran -Status: Open +Status: Verified
 [2019-08-28 16:33 UTC] joe at manvscode dot com
Tehran is in Asia though?
 [2019-08-31 14:36 UTC] zhangwenchao001 at gmail dot com
I think this is a problem in daylight saving time.

Test script:
---------------
date_default_timezone_set('Asia/Tehran');
$date1 = new \DateTime('2019-09-21 11:47:24');
$date2 = new \DateTime('2019-08-18 12:47:24');

var_dump($date1->diff($date2));

--------------
object(DateInterval)#3 (16) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(1)
  ["d"]=>
  int(2)
  ["h"]=>
  int(23)
  ["i"]=>
  int(0)
  ["s"]=>
  int(0)
  ["f"]=>
  float(0)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(1)
  ["days"]=>
  int(33)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}
 [2019-08-31 14:42 UTC] zhangwenchao001 at gmail dot com
<?php

It seems need to fix daylight saving time

date_default_timezone_set('America/New_York');
$date1 = new \DateTime('2019-11-05 11:47:24');
$date2 = new \DateTime('2019-10-02 12:47:24');

var_dump($date1->diff($date2));

----------------
object(DateInterval)#3 (16) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(1)
  ["d"]=>
  int(3)
  ["h"]=>
  int(-1)
  ["i"]=>
  int(0)
  ["s"]=>
  int(0)
  ["f"]=>
  float(0)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(1)
  ["days"]=>
  int(33)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}
 [2019-11-07 11:14 UTC] nikic@php.net
-PHP Version: 7.4.0beta4 +PHP Version: 7.3.11
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Wed Nov 13 15:01:28 2019 UTC