From 783a2d945eb7fcf675c565d19950bcb103dfedf7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 4 Sep 2023 07:08:23 +0200 Subject: [PATCH] add dt_ts_def helper --- freqtrade/util/__init__.py | 4 +++- freqtrade/util/datetime_helpers.py | 10 ++++++++++ tests/utils/test_datetime_helpers.py | 9 ++++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/freqtrade/util/__init__.py b/freqtrade/util/__init__.py index 8a3c2ad82..fc7cf5f6a 100644 --- a/freqtrade/util/__init__.py +++ b/freqtrade/util/__init__.py @@ -1,5 +1,6 @@ from freqtrade.util.datetime_helpers import (dt_floor_day, dt_from_ts, dt_humanize, dt_now, dt_ts, - dt_utc, format_date, format_ms_time, shorten_date) + dt_ts_def, dt_utc, format_date, format_ms_time, + shorten_date) from freqtrade.util.ft_precise import FtPrecise from freqtrade.util.periodic_cache import PeriodicCache from freqtrade.util.template_renderer import render_template, render_template_with_fallback # noqa @@ -11,6 +12,7 @@ __all__ = [ 'dt_humanize', 'dt_now', 'dt_ts', + 'dt_ts_def', 'dt_utc', 'format_date', 'format_ms_time', diff --git a/freqtrade/util/datetime_helpers.py b/freqtrade/util/datetime_helpers.py index b278fc98a..102c83143 100644 --- a/freqtrade/util/datetime_helpers.py +++ b/freqtrade/util/datetime_helpers.py @@ -28,6 +28,16 @@ def dt_ts(dt: Optional[datetime] = None) -> int: return int(dt_now().timestamp() * 1000) +def dt_ts_def(dt: Optional[datetime], default: int = 0) -> int: + """ + Return dt in ms as a timestamp in UTC. + If dt is None, return the current datetime in UTC. + """ + if dt: + return int(dt.timestamp() * 1000) + return default + + def dt_floor_day(dt: datetime) -> datetime: """Return the floor of the day for the given datetime.""" return dt.replace(hour=0, minute=0, second=0, microsecond=0) diff --git a/tests/utils/test_datetime_helpers.py b/tests/utils/test_datetime_helpers.py index 2ea5ad51e..a52973bc8 100644 --- a/tests/utils/test_datetime_helpers.py +++ b/tests/utils/test_datetime_helpers.py @@ -3,7 +3,7 @@ from datetime import datetime, timedelta, timezone import pytest import time_machine -from freqtrade.util import (dt_floor_day, dt_from_ts, dt_humanize, dt_now, dt_ts, dt_utc, +from freqtrade.util import (dt_floor_day, dt_from_ts, dt_humanize, dt_now, dt_ts, dt_ts_def, dt_utc, format_date, format_ms_time, shorten_date) @@ -22,6 +22,13 @@ def test_dt_now(): assert dt_ts(now) == int(now.timestamp() * 1000) +def test_dt_ts_def(): + assert dt_ts_def(None) == 0 + assert dt_ts_def(None, 123) == 123 + assert dt_ts_def(datetime(2023, 5, 5, tzinfo=timezone.utc)) == 1683244800000 + assert dt_ts_def(datetime(2023, 5, 5, tzinfo=timezone.utc), 123) == 1683244800000 + + def test_dt_utc(): assert dt_utc(2023, 5, 5) == datetime(2023, 5, 5, tzinfo=timezone.utc) assert dt_utc(2023, 5, 5, 0, 0, 0, 555500) == datetime(2023, 5, 5, 0, 0, 0, 555500,