mirror of
https://github.com/zulip/zulip.git
synced 2025-10-27 18:13:58 +00:00
timezone: Use standard library datetime.timezone.utc consistently.
datetime.timezone is available in Python ≥ 3.2. This also lets us remove a pytz dependency from the PostgreSQL scripts. Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
committed by
Tim Abbott
parent
29b8e11e20
commit
1f565a9f41
@@ -1,28 +1,25 @@
|
||||
import datetime
|
||||
import calendar
|
||||
from django.utils.timezone import utc as timezone_utc
|
||||
|
||||
class TimezoneNotUTCException(Exception):
|
||||
pass
|
||||
|
||||
def verify_UTC(dt: datetime.datetime) -> None:
|
||||
if dt.tzinfo is None or dt.tzinfo.utcoffset(dt) != timezone_utc.utcoffset(dt):
|
||||
if dt.tzinfo is None or dt.tzinfo.utcoffset(dt) != datetime.timezone.utc.utcoffset(dt):
|
||||
raise TimezoneNotUTCException("Datetime %s does not have a UTC timezone." % (dt,))
|
||||
|
||||
def convert_to_UTC(dt: datetime.datetime) -> datetime.datetime:
|
||||
if dt.tzinfo is None:
|
||||
return dt.replace(tzinfo=timezone_utc)
|
||||
return dt.astimezone(timezone_utc)
|
||||
return dt.replace(tzinfo=datetime.timezone.utc)
|
||||
return dt.astimezone(datetime.timezone.utc)
|
||||
|
||||
def floor_to_hour(dt: datetime.datetime) -> datetime.datetime:
|
||||
verify_UTC(dt)
|
||||
return datetime.datetime(*dt.timetuple()[:4]) \
|
||||
.replace(tzinfo=timezone_utc)
|
||||
return datetime.datetime(*dt.timetuple()[:4], tzinfo=datetime.timezone.utc)
|
||||
|
||||
def floor_to_day(dt: datetime.datetime) -> datetime.datetime:
|
||||
verify_UTC(dt)
|
||||
return datetime.datetime(*dt.timetuple()[:3]) \
|
||||
.replace(tzinfo=timezone_utc)
|
||||
return datetime.datetime(*dt.timetuple()[:3], tzinfo=datetime.timezone.utc)
|
||||
|
||||
def ceiling_to_hour(dt: datetime.datetime) -> datetime.datetime:
|
||||
floor = floor_to_hour(dt)
|
||||
@@ -37,7 +34,7 @@ def ceiling_to_day(dt: datetime.datetime) -> datetime.datetime:
|
||||
return floor + datetime.timedelta(days=1)
|
||||
|
||||
def timestamp_to_datetime(timestamp: float) -> datetime.datetime:
|
||||
return datetime.datetime.fromtimestamp(float(timestamp), tz=timezone_utc)
|
||||
return datetime.datetime.fromtimestamp(float(timestamp), tz=datetime.timezone.utc)
|
||||
|
||||
def datetime_to_timestamp(dt: datetime.datetime) -> int:
|
||||
verify_UTC(dt)
|
||||
|
||||
Reference in New Issue
Block a user