Doc #78267 [Com]: Change in sun times result with PHP version change

From: Date: Thu, 09 Jan 2020 13:29:56 +0000
Subject: Doc #78267 [Com]: Change in sun times result with PHP version change
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-17192@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78267&edit=1

 ID:                 78267
 Comment by:         contact at frank-liepert dot de
 Reported by:        stefano dot borghi at gmx dot com
 Summary:            Change in sun times result with PHP version change
 Status:             Verified
 Type:               Documentation Problem
 Package:            Date/time related
 PHP Version:        7.2.20
 Block user comment: N
 Private report:     N

 New Comment:

It seems like PHP 7.2 has fixed another issue when dealing with different timezones.


Test script:
------------

<?php

$longitude = 12.7645;
$latitude = 48.9825;

date_default_timezone_set('America/New_York');
$dateTime = new DateTime('2019-07-08');
$sunrise = date_sunrise($dateTime->getTimestamp(), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude,
90 + 5 / 6);
var_dump($sunrise);

date_default_timezone_set('UTC');
$dateTime = new DateTime('2019-07-08');
$sunrise = date_sunrise($dateTime->getTimestamp(), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude,
90 + 5 / 6);
var_dump($sunrise);

date_default_timezone_set('Australia/Brisbane');
$dateTime = new DateTime('2019-07-08');
$sunrise = date_sunrise($dateTime->getTimestamp(), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude,
90 + 5 / 6);
var_dump($sunrise);


Output for 7.2.0 - 7.4.1
------------------------
int(1562555526)
int(1562555526)
int(1562555526)


Output for 5.3.0 - 7.1.33
------------------------
int(1562555561)
int(1562555552)
int(1562555531)


Previous Comments:
------------------------------------------------------------------------
[2019-07-13 15:33:29] cmb@php.net

This[1] has basically been a bug fix, since formerly the time to
calculate the Julian Day count has been adjusted to noon, albeit
the JD calculation already catered to that, which caused the
calculation to be half a day off.  For instance, in your example
the time was actually calculated for 2018-03-14.5 (i.e. a
hypothetical day between the 14th and 15th).  Now the time is
properly adjusted to midnight.

[1] <https://github.com/php/php-src/commit/a063d55395c818c401b7efdf6b42b4728ce3df08>

------------------------------------------------------------------------
[2019-07-09 19:34:57] stefano dot borghi at gmx dot com

Description:
------------
In PHP >= v7.2 the result of the date_sun_info function, and similarly the other sun
related functions, return a different value for sunrise and sunset compared to the previous PHP
versions.

I'm not sure if this is an expected change due to a correction of a previously wrong result or
if it's an actual bug.

In any case this change is not reported in the documentation.


Test script:
---------------
// see https://3v4l.org/31aER

function sunTimes($lat, $long, $date)
{
    date_default_timezone_set('UTC');

    $sun_info = date_sun_info(strtotime($date),  $lat, $long);

    $sunrise = date("H:i:s", $sun_info['sunrise']);
    $sunset =  date("H:i:s", $sun_info['sunset']);

    return "on $date sun rises at $sunrise and sets at $sunset";
}

echo sunTimes(51.5, 0, '2018-03-14'); // ~London


Expected result:
----------------
// PHP <= v7.1.0
'on 2018-03-14 sun rises at 06:14:51 and sets at 18:03:16'  


Actual result:
--------------
// PHP >= v7.2.4
'on 2018-03-14 sun rises at 06:15:59 and sets at 18:02:24'



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



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


Thread (2 messages)

« previous php.doc.bugs (#17192) next »