Re: Kronolith - Birthdays off by one day [SOLVED]

Volker Then <[email protected]>
Newsgroups gmane.comp.horde.kronolith
Message-ID <[email protected]>
Zitat von Michael J Rubinsky <[email protected]>:

> Quoting Michael J Rubinsky <[email protected]>:
>
>> Quoting Volker Then <[email protected]>:
>>
>>> Zitat von Michael J Rubinsky <[email protected]>:
>>>
>>>> Quoting John H. Bennett III <[email protected]>:
>>>>
>>>>> Quoting Michael J Rubinsky <[email protected]>:
>>>>>
>>>>>> Quoting Volker Then <[email protected]>:
>>>>>>
>>>>>>> Zitat von "John H. Bennett III" <[email protected]>:
>>>>>>>
>>>>>>>> Quoting Michael J Rubinsky <[email protected]>:
>>>>>>>>
>>>>>>>>> Quoting Volker Then <[email protected]>:
>>>>>>>>>
>>>>>>>>>> Zitat von "John H. Bennett III" <[email protected]>:
>>>>>>>>>>
>>>>>>>>>>> Quoting Michael J Rubinsky <[email protected]>:
>>>>>>>>>>>
>>>>>>>>>>>> Quoting John H. Bennett III <[email protected]>:
>>>>>>>>>>>>
>>>>>>>>>>>>> Quoting Michael J Rubinsky <[email protected]>:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Quoting Volker Then <[email protected]>:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Zitat von Michael J Rubinsky <[email protected]>:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Quoting Michael J Rubinsky <[email protected]>:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Quoting John H. Bennett III <[email protected]>:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Quoting Michael J Rubinsky <[email protected]>:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Quoting John H. Bennett III <[email protected]>:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Quoting Simon Wilson <[email protected]>:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> I've stumbled across a problem that I don't  
>>>>>>>>>>>>>>>>>>>>>> know what's going on.
>>>>>>>>>>>>>>>>>>>>>> I've added birthdays to some of my contacts, I  
>>>>>>>>>>>>>>>>>>>>>> put them in with the
>>>>>>>>>>>>>>>>>>>>>> correct date, but some time in the future, I  
>>>>>>>>>>>>>>>>>>>>>> look at them on the
>>>>>>>>>>>>>>>>>>>>>> Calendar, and some show a day off (ahead one  
>>>>>>>>>>>>>>>>>>>>>> day).  I edit them in
>>>>>>>>>>>>>>>>>>>>>> turba again, and again some time in the future  
>>>>>>>>>>>>>>>>>>>>>> some are off a day.
>>>>>>>>>>>>>>>>>>>>>> This has happened 4 times in the last 2 weeks.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> I don't know what's triggering this. Anyone  
>>>>>>>>>>>>>>>>>>>>>> else seeing this?  What
>>>>>>>>>>>>>>>>>>>>>> can I look for to help try to explain this.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> John
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> There has been discussion on this in the past on  
>>>>>>>>>>>>>>>>>>>>> the list... mostly around birthdays syncing  
>>>>>>>>>>>>>>>>>>>>> incorrectly through ActiveSync and back.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> If this is due to ActiveSync, it should only  
>>>>>>>>>>>>>>>>>>> affect the contacts that have been edited on the  
>>>>>>>>>>>>>>>>>>> client. Is that what you are seeing?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> -- 
>>>>>>>>>>>>>>>>>>> mike
>>>>>>>>>>>>>>>>>>> The Horde Project
>>>>>>>>>>>>>>>>>>> http://www.horde.org
>>>>>>>>>>>>>>>>>>> https://www.facebook.com/hordeproject
>>>>>>>>>>>>>>>>>>> https://www.twitter.com/hordeproject
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Hi Mike,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Yes, that is what I am seeing.  I made a change to  
>>>>>>>>>>>>>>>>>> my contact info on my Note 3,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Can you tell me what Android version you are using on  
>>>>>>>>>>>>>>>> the Note? Did you take the KK update?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Here it is only with contacts that are edited on the  
>>>>>>>>>>>>>>> client - and that happens (almost) every time the  
>>>>>>>>>>>>>>> contact has been edited. Some of the birthdays shifted  
>>>>>>>>>>>>>>> minus four days after a few edits. Nexus 5, Kitkat  
>>>>>>>>>>>>>>> 4.4.4, Nine.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Can you test if this commit:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> https://github.com/horde/horde/compare/46ff2bea431aa99d82afc33d19cfb5cd23be90a4...b8a48c13b550d70754a9b3585912762683ff1ddc
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> fixes it for you?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -- 
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Mike,
>>>>>>>>>>>>>
>>>>>>>>>>>>> That didn't fix it.  The date still shows up one day earlier.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I created 2 contacts with different birthdays.  Edited  
>>>>>>>>>>>>> one from my device, and one from turba, then did a sync.  
>>>>>>>>>>>>>  Contact edited on device, shows birthday one day early.  
>>>>>>>>>>>>>  Contact from turba, fine.  Then did the opposite, and  
>>>>>>>>>>>>> original contact edited from turba now shows birthday  
>>>>>>>>>>>>> one day early.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Please let me know if you want to to try anything else.
>>>>>>>>>>>>
>>>>>>>>>>>> What timezone are you in? I want to set up my environment  
>>>>>>>>>>>> the same as yours so I can trace this.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> -- 
>>>>>>>>>>>> mike
>>>>>>>>>>>> The Horde Project
>>>>>>>>>>>> http://www.horde.org
>>>>>>>>>>>> https://www.facebook.com/hordeproject
>>>>>>>>>>>> https://www.twitter.com/hordeproject
>>>>>>>>>>>
>>>>>>>>>>> I am in the Central Time Zone.
>>>>>>>>>>>
>>>>>>>>>>> from php.ini - date.timezone = "America/Chicago", horde  
>>>>>>>>>>> prefs set to America/Chicago also.
>>>>>>>>>>>
>>>>>>>>>>> John
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> The commit didn't work for me either. I am in CEST. Horde  
>>>>>>>>>> prefs set to Europe/Berlin.
>>>>>>>>>
>>>>>>>>> Ok. How about the lastest Git?
>>>>>>>>>
>>>>>>>>>
>>>>>>>> Still didn't work for me with my note3.
>>>>>>>>
>>>>>>>> I used the raw file from this link,  
>>>>>>>> https://github.com/horde/horde/blob/master/framework/ActiveSync/lib/Horde/ActiveSync/Device.php
>>>>>>>>
>>>>>>>> John
>>>>>>>
>>>>>>> Same here.
>>>>>>
>>>>>> I reread the Android source code for the contacts sync provider  
>>>>>> and revamped some code in Horde. The current code (already  
>>>>>> released in PEAR) works for me on my various test devices, and  
>>>>>> all the tests pass. If it doesn't work for you at this point,  
>>>>>> I'm really not sure what else to tell you other than you will  
>>>>>> need to trace the code to see where the date is being shifted.
>>>>>>
>>>>>
>>>>> Still doesn't work for me.  I turned on per device logging and  
>>>>> have a log I can send to you personally, if that is OK?
>>>>
>>>> Sure, you can send it to me though I can't promise any miracles  
>>>> since I can't reproduce.
>>>>
>>>
>>> Hi Mike,
>>> after all this seems not be an Android issue. I checked it now  
>>> with my iOS test device (iPhone 4 iOS 7.1.2). After editing a  
>>> contact on the client side (where the correct birthday was shown)  
>>> the birthday shifts minus one day on the server side.
>>> I can't figure out what might be the time zone problem, if there  
>>> is any, since all devices use time zone Europe/Berlin (iOS,  
>>> Android, Horde prefs, server time: Mon Oct  6 15:40:40 CEST 2014).
>>>
>>> A birthday syncs to the phone like this:
>>>
>>> 2014-10-06T13:55:37+00:00 DEBUG: [26223] O        <POOMCONTACTS:Birthday>
>>> 2014-10-06T13:55:37+00:00 DEBUG: [26223] O         1966-07-23T00:00:00.000Z
>>> 2014-10-06T13:55:37+00:00 DEBUG: [26223] O        </POOMCONTACTS:Birthday>
>>>
>>> And after editing on the phone it goes back to the server like this:
>>> 2014-10-06T13:57:23+00:00 DEBUG: [26223] I        <POOMCONTACTS:Birthday>
>>> 2014-10-06T13:57:23+00:00 DEBUG: [26223] I           
>>> 1966-07-22T23:00:00.000Z
>>> 2014-10-06T13:57:23+00:00 DEBUG: [26223] I        </POOMCONTACTS:Birthday>
>>>
>>> I wonder if this shifting has some something to do with daylight savings...
>>
>> You are correct in that the offset sent from the device is due to  
>> DST, however this is exactly what is expected for an iOS device  
>> running iOS 5 or greater. In code, the datetime is converted back  
>> to to the user's date_default_timezone - which moves it back to the  
>> correct day. I've added another test to the test suite for this,  
>> and it passes for me. The only way I see this not working is if one  
>> of the timezones in use is actually NOT Europe/Berlin. Otherwise,  
>> you will need to trace the code to see where the conversion is  
>> failing for you.
>>
>> Essentially, in your case  
>> Horde_ActiveSync_Device::normalizePoomContactsDates() should return  
>> a Horde_Date object that contains the UTC version of the datetime  
>> (1966-07-23 23:00:00). So, this means that in  
>> Turba_Driver::fromASContact() $message-birthday should be the UTC  
>> time as well. We then change the timezone in a clone of that object  
>> to the local timezone and format it as Y-m-d. This should move the  
>> datetime back to the correct date in Turba.
>
> Actually, on second thought the offset looks incorrect for DST in  
> Europe/Berlin. If I'm not mistaken, that should be a UTC+2 offset,  
> right? So it's off by one hour. Regardless, the server side will  
> still shift the date *ahead* in your timezone, so even if the offset  
> is off by an hour, the resulting Y-m-d value will still be the  
> correct value.

OK, this is solved, my fault. I was quite sure that the PHP timezone  
settings were correct, but they weren't! I set this to
date.timezone= "Europe/Berlin"
and the shifting is gone (as was already discussed on the list, as I  
remember). Mike, sorry for your inconvenience and the unnecessary  
tests you did!
John, please check your php.ini settings as well, thanks!

Volker



-- 
kronolith mailing list
Frequently Asked Questions: http://wiki.horde.org/FAQ
To unsubscribe, mail: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.