forked from mytardis/mytardis-app-atom
-
Notifications
You must be signed in to change notification settings - Fork 2
/
time_util.py
42 lines (33 loc) · 1.3 KB
/
time_util.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from django.conf import settings
import pytz
LOCAL_TZ = pytz.timezone(settings.TIME_ZONE)
# This file replicates util.py in Tardis, but needs to be checked/updated for Django 1.4
# Included here as a short-term workaround. --Steve B, August 2012.
def get_local_time(dt):
'''
Ensure datetime is timezone-aware and in local time.
If the USE_TZ setting in the current dev version of Django comes in,
this *should* keep providing correct behaviour.
(SteveB: that comment dates from a previous version of this function - I don't
know if it's still true.)
'''
# If datetime is already naive, simply set TZ
if (dt.tzinfo == None):
return LOCAL_TZ.localize(dt)
# Otherwise convert
return LOCAL_TZ.normalize(dt.astimezone(LOCAL_TZ))
def get_local_time_naive(dt):
'''
Ensure datetime is timezone-naive and in local time.
'''
return get_local_time(dt).replace(tzinfo=None)
def get_utc_time(dt):
'''
Ensure datetime is timezone-aware and in UTC time.
If the USE_TZ setting in the current dev version of Django comes in,
this *should* keep providing correct behaviour.
'''
# If datetime is already naive, set TZ
if (dt.tzinfo == None):
dt = dt.replace(tzinfo=LOCAL_TZ)
return pytz.utc.normalize(dt.astimezone(pytz.utc))