From d8122962db3b63165cfaf1f8343b92716432ae42 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 4 Sep 2023 06:57:11 +0200 Subject: [PATCH] Add "date to string" helper --- freqtrade/util/__init__.py | 3 ++- freqtrade/util/datetime_helpers.py | 13 +++++++++++++ tests/utils/test_datetime_helpers.py | 13 ++++++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/freqtrade/util/__init__.py b/freqtrade/util/__init__.py index af09624ac..8a3c2ad82 100644 --- a/freqtrade/util/__init__.py +++ b/freqtrade/util/__init__.py @@ -1,5 +1,5 @@ from freqtrade.util.datetime_helpers import (dt_floor_day, dt_from_ts, dt_humanize, dt_now, dt_ts, - dt_utc, format_ms_time, shorten_date) + 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 @@ -12,6 +12,7 @@ __all__ = [ 'dt_now', 'dt_ts', 'dt_utc', + 'format_date', 'format_ms_time', 'FtPrecise', 'PeriodicCache', diff --git a/freqtrade/util/datetime_helpers.py b/freqtrade/util/datetime_helpers.py index 7f44cbdb0..b278fc98a 100644 --- a/freqtrade/util/datetime_helpers.py +++ b/freqtrade/util/datetime_helpers.py @@ -4,6 +4,8 @@ from typing import Optional import arrow +from freqtrade.constants import DATETIME_PRINT_FORMAT + def dt_now() -> datetime: """Return the current datetime in UTC.""" @@ -63,6 +65,17 @@ def dt_humanize(dt: datetime, **kwargs) -> str: return arrow.get(dt).humanize(**kwargs) +def format_date(date: Optional[datetime]) -> str: + """ + Return a formatted date string. + Returns an empty string if date is None. + :param date: datetime to format + """ + if date: + return date.strftime(DATETIME_PRINT_FORMAT) + return '' + + def format_ms_time(date: int) -> str: """ convert MS date to readable format. diff --git a/tests/utils/test_datetime_helpers.py b/tests/utils/test_datetime_helpers.py index 6ce975732..2ea5ad51e 100644 --- a/tests/utils/test_datetime_helpers.py +++ b/tests/utils/test_datetime_helpers.py @@ -4,7 +4,7 @@ import pytest import time_machine from freqtrade.util import (dt_floor_day, dt_from_ts, dt_humanize, dt_now, dt_ts, dt_utc, - format_ms_time, shorten_date) + format_date, format_ms_time, shorten_date) def test_dt_now(): @@ -70,3 +70,14 @@ def test_format_ms_time() -> None: # Date 2017-12-13 08:02:01 date_in_epoch_ms = 1513152121000 assert format_ms_time(date_in_epoch_ms) == res.astimezone(None).strftime('%Y-%m-%dT%H:%M:%S') + + +def test_format_date() -> None: + + date = datetime(2023, 9, 1, 5, 2, 3, 455555, tzinfo=timezone.utc) + assert format_date(date) == '2023-09-01 05:02:03' + assert format_date(None) == '' + + date = datetime(2021, 9, 30, 22, 59, 3, 455555, tzinfo=timezone.utc) + assert format_date(date) == '2021-09-30 22:59:03' + assert format_date('') == ''