diff --git a/src/sensor/tests/test_sensor_utils.py b/src/sensor/tests/test_sensor_utils.py new file mode 100644 index 00000000..769b82a5 --- /dev/null +++ b/src/sensor/tests/test_sensor_utils.py @@ -0,0 +1,20 @@ +from datetime import datetime + +from django.conf import settings + +from sensor import utils + + +def test_timestamp_manipulation(): + now = datetime.now() + now_int = int(now.timestamp()) + now_fromint = datetime.fromtimestamp(now_int) + now_str = now.strftime(settings.DATETIME_FORMAT) + + test_dt_int = utils.get_timestamp_from_datetime(now) + test_dt_fromint = utils.get_datetime_from_timestamp(now_int) + test_dt_fromstr = utils.parse_datetime_str(now_str) + + assert now_int == test_dt_int + assert now_fromint == test_dt_fromint + assert now == test_dt_fromstr diff --git a/src/sensor/utils.py b/src/sensor/utils.py index fc46980a..af07d057 100644 --- a/src/sensor/utils.py +++ b/src/sensor/utils.py @@ -9,16 +9,16 @@ logger = logging.getLogger(__name__) -def get_datetime_from_timestamp(ts): +def get_datetime_from_timestamp(ts: int) -> datetime: return datetime.fromtimestamp(ts) -def get_timestamp_from_datetime(dt: datetime): +def get_timestamp_from_datetime(dt: datetime) -> int: """Assumes UTC datetime.""" - return int(dt.strftime("%S")) + return int(dt.timestamp()) -def parse_datetime_str(d): +def parse_datetime_str(d: str) -> datetime: return datetime.strptime(d, settings.DATETIME_FORMAT)