[kronolith] Kronolith - Birthdays off by one day

Michael J Rubinsky mrubinsk at horde.org
Mon Oct 6 15:02:35 UTC 2014


Quoting Volker Then <horde40 at volkerthen.com>:

> Zitat von Michael J Rubinsky <mrubinsk at horde.org>:
>
>> Quoting John H. Bennett III <bennettj at thebennetthome.com>:
>>
>>> Quoting Michael J Rubinsky <mrubinsk at horde.org>:
>>>
>>>> Quoting Volker Then <horde40 at volkerthen.com>:
>>>>
>>>>> Zitat von "John H. Bennett III" <bennettj at thebennetthome.com>:
>>>>>
>>>>>> Quoting Michael J Rubinsky <mrubinsk at horde.org>:
>>>>>>
>>>>>>> Quoting Volker Then <horde40 at volkerthen.com>:
>>>>>>>
>>>>>>>> Zitat von "John H. Bennett III" <bennettj at thebennetthome.com>:
>>>>>>>>
>>>>>>>>> Quoting Michael J Rubinsky <mrubinsk at horde.org>:
>>>>>>>>>
>>>>>>>>>> Quoting John H. Bennett III <bennettj at thebennetthome.com>:
>>>>>>>>>>
>>>>>>>>>>> Quoting Michael J Rubinsky <mrubinsk at horde.org>:
>>>>>>>>>>>
>>>>>>>>>>>> Quoting Volker Then <horde40 at volkerthen.com>:
>>>>>>>>>>>>
>>>>>>>>>>>>> Zitat von Michael J Rubinsky <mrubinsk at horde.org>:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Quoting Michael J Rubinsky <mrubinsk at horde.org>:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Quoting John H. Bennett III <bennettj at thebennetthome.com>:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Quoting Michael J Rubinsky <mrubinsk at horde.org>:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Quoting John H. Bennett III <bennettj at thebennetthome.com>:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Quoting Simon Wilson <simon at simonandkate.net>:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> 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.

-- 
mike
The Horde Project
http://www.horde.org
https://www.facebook.com/hordeproject
https://www.twitter.com/hordeproject
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5869 bytes
Desc: S/MIME Signature
URL: <http://lists.horde.org/archives/kronolith/attachments/20141006/f21e997c/attachment-0001.bin>


More information about the kronolith mailing list