Files
zulip/zerver/lib/timestamp.py
Rishi Gupta 82b814a1cd analytics: Simplify frequency and measurement interval options.
Change the CountStat object to take an is_gauge variable instead of a
smallest_interval variable. Previously, (smallest_interval, frequency)
could be any of (hour, hour), (hour, day), (hour, gauge), (day, hour),
(day, day), or (day, gauge).
The current change is equivalent to excluding (hour, day) and (day, hour)
from the list above.

This change, along with other recent changes, allows us to simplify how we
handle time intervals. This commit also removes the TimeInterval object.
2016-10-14 10:18:37 -07:00

35 lines
1.2 KiB
Python

from __future__ import absolute_import
import datetime
import calendar
from django.utils.timezone import utc
def is_timezone_aware(datetime_object):
# type: (datetime.datetime) -> bool
return datetime_object.tzinfo is not None
def datetime_to_UTC(datetime_object):
# type: (datetime.datetime) -> datetime.datetime
if is_timezone_aware(datetime_object):
return datetime_object.astimezone(utc)
return datetime_object.replace(tzinfo=utc)
def floor_to_day(datetime_object):
# type: (datetime.datetime) -> datetime.datetime
return datetime.datetime(*datetime_object.timetuple()[:3]) \
.replace(tzinfo=datetime_object.tzinfo)
def timestamp_to_datetime(timestamp):
# type: (float) -> datetime.datetime
return datetime.datetime.utcfromtimestamp(float(timestamp)).replace(tzinfo=utc)
def datetime_to_timestamp(datetime_object):
# type: (datetime.datetime) -> int
return calendar.timegm(datetime_object.timetuple())
def datetime_to_string(datetime_object):
# type: (datetime.datetime) -> str
assert is_timezone_aware(datetime_object)
date_string = datetime_object.strftime('%Y-%m-%d %H:%M:%S%z')
return date_string