PS: current implementation breaks.... a few "self" in front of "timezone" 
required ...
Anyway, I'll give it a shot generalizing how I envisioned a timezone 
preference. 
PS: Pytz is required

On Monday, March 18, 2013 10:12:30 AM UTC+1, Niphlod wrote:
>
> Whoops, forgot to tell that jstz is ~5kb if minified, so shipping it 
> shouldn't be a problem.... at this point, preparing a new field in 
> auth_user or at least a validator with the list of timezones 
> ('europe/rome', 'america/denver", etc etc) to let the "client" choose it's 
> own (resorting to auto-detect of course in case the user didn't set his 
> preference) would be the best thing for newbies developers approaching 
> timezones for the first time (there's a lot of things to grasp to handle 
> them correctly).
>
> On Monday, March 18, 2013 10:03:56 AM UTC+1, Niphlod wrote:
>>
>> uhm. The real problem of a client-side implementation is that if the 
>> client pc is not set correctly, it obviously fails.
>> Assuming that we're ok with that (i.e. most of the times the client clock 
>> is set correctly) this implementation is fine "for the current day" but 
>> doesn't account for DST at all, i.e. there are several corner-cases (read: 
>> too many to count them as "acceptable exceptions") where given an offset 
>> you can't tell what "zone" the client is in, so you can't recalculate 
>> either the proper DST --> you end up with wrong data.
>>
>> This is a full implementation that is fine in the 99% of the cases. 
>> http://pellepim.bitbucket.org/jstz/
>>
>> PS: I didn't read the implementation yet but we should "enforce" a good 
>> behaviour of storing all informations as UTC and representing it as the 
>> local timezone of the user, either server-side or client-side.
>>
>> PS2: Instead of reinventing the wheel, we could use moment.js and 
>> https://github.com/timrwood/moment-timezone
>>
>> On Monday, March 18, 2013 3:31:24 AM UTC+1, Massimo Di Pierro wrote:
>>>
>>> I was looking at code to detect the user timezone and store dates 
>>> consistently in UTC format.
>>> I made some changes in trunk to handle this. I could use some help 
>>> testing.
>>>
>>> 1) In the header of your layout.html add:
>>>
>>>  {{if not session.timezone:}}
>>>   <script>
>>>     
>>> jQuery(function(){jQuery.post('{{=URL('default','set_timezone')}}',{timezone:(new
>>>  
>>> Date()).getTimezoneOffset()});});
>>>   </script>
>>> {{pass}}
>>>
>>> 2) in the default controller:
>>>
>>> def set_timezone():
>>>     session.timezone = int(request.vars.timezone)/60
>>>
>>> 3) Use the new timezone attribute of validators in trunk:
>>>
>>>    Field('birthday','datetime',requires = 
>>> IS_DATETIME(timezone=session.timezone)
>>>
>>> Does it work for you? Suggestions for improvement?
>>>
>>> Massimo
>>>
>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to