src/cm/utils/timezone.py
changeset 0 40c8f766c9b8
child 275 5339e9e0e186
equal deleted inserted replaced
-1:000000000000 0:40c8f766c9b8
       
     1 from datetime import timedelta
       
     2 from pytz import timezone, utc
       
     3 from django.conf import settings
       
     4 
       
     5 local_tz = timezone(settings.TIME_ZONE)
       
     6 
       
     7 def request_tz_convert(date, request):
       
     8     return tz_convert(date, request.session.get('tz',None))
       
     9 
       
    10 def tz_convert(date, tz):
       
    11     """
       
    12     Convert date to time zone
       
    13     tz can be;
       
    14         - '-2' (relative to utc)
       
    15         - 'Paris/Europe' real timezone like (cf pytz)
       
    16     """
       
    17     if tz:
       
    18         system_local_date = local_tz.localize(date)
       
    19         try:
       
    20              # simple utc delta?
       
    21             utc_offset = int(tz)
       
    22             utc_time = system_local_date.astimezone(utc)
       
    23             res = utc.normalize(utc_time + timedelta(hours=utc_offset))
       
    24             return res
       
    25         except:
       
    26             # real timezone
       
    27             timez = timezone(tz)
       
    28             local_date = system_local_date.astimezone(timez)
       
    29             return local_date            
       
    30     else:
       
    31         return date