Re: Strange Result of Datetime::diff

From: Date: Tue, 04 Apr 2017 10:16:07 +0000
Subject: Re: Strange Result of Datetime::diff
Groups: php.general 
Request: Send a blank email to php-general+get-326045@lists.php.net to get a copy of this message
Am 03-Apr-2017 18:22:16 +0200 schrieb tularis@php.net: > 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: > >> > >> On Mon, Apr 3, 2017 at 8:39 AM, <naitsirch@e.mail.de> wrote: > >>> 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 > > 3 days." (see https://3v4l.org/RMuUZ). > >>> What is the reason for this behaviour? > >>> > >>> Thanks in advance and 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 > >>> > >> > >> You sure about that, the above should yield 1 months and 1 days since you > > have an extra day there: > >> > >> > >> http://sandbox.onlinephpfunctions.com/code/fe7c7d989101ab5e1dd1530d457bfc5Ä=¹“%ú‚NE%ò¹Ð > >> ½ > > c7a1cfa8fa > >> > >> If 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 > > > > 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 > Hi Maciek, you are right. that helps me. Thanks a lot. Christian ------------------------------------------------------------------------------------------------- FreeMail powered by mail.de - MEHR SICHERHEIT, SERIOSITÄT UND KOMFORT

« previous php.general (#326045) next »