Re: Strange Result of Datetime::diff
| From: | Maciek Sokolewicz | Date: | Mon, 03 Apr 2017 16:22:10 +0000 |
| Subject: | Re: Strange Result of Datetime::diff | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-326044@lists.php.net to get a copy of this message | ||
On 3-4-2017 17:36, Ryan Pallas wrote:
On Apr 3, 2017 9:29 AM, <naitsirch@e.mail.de> wrote: Am 03-Apr-2017 15:28:44 +0200 schrieb azizsaleh@gmail.com:I've had a bit of a test, and I believe it has to do with timezone handling. I tested it by moving the dates 1 day forward (march 2nd till april 2nd), and then suddenly it changes back to a difference of 1 month and 0 days. Let's assume we use current timezones; I'm in CET, so let's assume that as the local timezone. We input the following times: 2017-03-01 00:00:00 CET (UTC+1) 2017-04-01 00:00:00 CEST (UTC+2) Converting the dates back to UTC times would yield: 2017-02-28 23:00:00 UTC 2017-03-31 22:00:00 UTC So, we would now see a difference of 1 month and 3 days, which is given as the answer by the diff function. In other words, it seems to have to do with Timezone handling. If you set the default timezone to UTC, the effect we see wil disappear. Proof: https://3v4l.org/uoioc --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirusOn Mon, Apr 3, 2017 at 8:39 AM, <naitsirch@e.mail.de> wrote:3 days." (see https://3v4l.org/RMuUZ).Hi, I'd expect the following script: <?php $date1 = new DateTime('2017-03-01'); $date2 = new DateTime('2017-04-02'); $diff = $date1->diff($date2); echo "{$diff->m} months and {$diff->d} days."; ?> would print "1 months and 0 days.". But instead it prints "1 months and-------------------------------------What is the reason for this behaviour? Thanks in advance and best regards Christian ------------------------------------------------------------have an extra day there:FreeMail powered by mail.de - MEHR SICHERHEIT, SERIOSITÄT UND KOMFORT -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phpYou sure about that, the above should yield 1 months and 1 days since youhttp://sandbox.onlinephpfunctions.com/code/fe7c7d989101ab5e1dd1530d457bfcc7a1cfa8faIf it was: $date1 = new DateTime('2017-03-01'); $date2 = new DateTime('2017-04-01'); Then it would be exactly 1 month.Aaw, of course you are right. I changed the code for another test and forgot to revert the change when I copied it into the mail. So it seems like there is a bug. But what makes me wonder is that HHVM prints out the same result. That's why I wanted to ask this mailing list as I assume that I am missing something :-/ Does anyone have an idea? What time zone are you using? The difference may be related to daylight savings/summer time as that changed in that specific period. Best regards Christian ------------------------------------------------------------ ------------------------------------- FreeMail powered by mail.de - MEHR SICHERHEIT, SERIOSITÄT UND KOMFORT -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php