this stores dates in UTC but displays date in alternate timezone.  You can 
set the represent property based on a timezone stored in the users profile 
or derived from locale settings ...

from pytz import timezone
import pytz

db.define_table('t_date',
    Field('f_name'),
    Field('f_datetime', type='datetime', default=request.utcnow),
    Field('f_utcdatetime', type='datetime', default=request.utcnow),
    migrate=True)
    
db.t_date.f_datetime.represent = lambda value, row : 
pytz.UTC.localize(value).astimezone(timezone('US/Eastern'))


I used information in the following two pages for help ...

http://stackoverflow.com/questions/7065164/how-to-make-an-unaware-datetime-timezone-aware-in-python?lq=1
http://pypi.python.org/pypi/pytz/

On Tuesday, February 12, 2013 7:40:59 AM UTC-5, Michael Beller wrote:
>
> I've also been researching and experimenting ...
>
> I've come to the conclusion to only store utc dates (e.g., using utcnow) 
> in the data base and then use .represent or other means to convert for 
> display.
>
> Most notably, use the putz python library ...
>
> On Tuesday, February 12, 2013 1:58:26 AM UTC-5, rochacbruno wrote:
>>
>> I am on mobile now and I cant ellaborate a good code example, but I can 
>> give you a hint.
>>
>> db.table.datefield.represent = lambda value, row : 
>> value.strftime("%Y/%m/%d")
>>
>> grid = SQLFORM.grid(db.table)
>>
>> so grid will use the represent callback to display the data.
>>
>> following this example you can do
>>
>> def set_timezone(value, row):
>>      return value. #do the calculation
>>
>> db.table.field.represent = set_timezone
>> Em 12/02/2013 04:44, "newbie" <neha...@gmail.com> escreveu:
>>
>>>
>>> On Tuesday, 12 February 2013 11:06:00 UTC+5:30, newbie wrote: 
>>>>
>>>> Hi,
>>>>     I have a table x, with fields name,place,timezone_offset.And 
>>>> another table y ,having  field 'servertime',which **stores the current 
>>>> time of the server its fetching the values from.
>>>>  
>>>>  db.define_table('x',Field('**name'),Field('place'),Field('**
>>>> timezone_offset'))                     
>>>> db.define_table('y',Field('**name'),Field('ser**vertime'))  
>>>>
>>>  
>>> User will set the timezone offset in table x, for a particular name. 
>>> There is one thread continuously running in background in the server which 
>>> will save the servertime as local time using datetime.datetime.now() in 
>>> table y for the name.
>>>  
>>> And finally this data displayed by using SQLFORM.grid on the UI.
>>>  
>>> Problem facing:
>>> We have to convert the local time saved for the name field as per saved 
>>> timezone_offset in x table and display on the grid without modifying 
>>> anything on database level.
>>> It means suppose for name ='Alex'  timezone_offset was being saved as -5 
>>> in x table and suppose server running on different timezone lets say on 
>>> +5.30 so for name Alex server will save the servertime in +5.30 format as 
>>> it is the local time for the server but when it will be displayed on the 
>>> grid servertime should first get converted to Alex timezone_offset which is 
>>> set as -5 and then display on the grid.
>>>  
>>> Can anyone please suggest me how can I achieved in web2py? Is there any 
>>> way to achieve it using SQLFORM.grid()?
>>>  
>>> Thanks.
>>>  
>>>  
>>>  
>>>
>>>>                   
>>>>
>>>  -- 
>>>  
>>> --- 
>>> 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+un...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>  
>>>  
>>>
>>

-- 

--- 
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