ISO8601?
def format_timestamp(timestamp: datetime) -> str:
"""
Convert datetime object into ISO 8601 formatted string (without timezone).
If timezone is provided, convert it to UTC first.
"""
if timestamp.tzinfo:
timestamp = timestamp.astimezone(tz=timezone.utc).replace(tzinfo=None)
return timestamp.isoformat(sep=' ', timespec='seconds')
Тест:
def test_format_timestamp_tz(self) -> None:
timestamp = datetime(
year=2021,
month=2,
day=3,
hour=4,
minute=5,
second=6,
microsecond=7,
)
timestamp_tz = timestamp.astimezone(tz=ZoneInfo('America/New_York'))
result = format_timestamp(timestamp_tz)
self.assertEqual(result, '2021-02-03 09:05:06')
Проблема что когда будете перевод часов в этой таймзоне, тест упадет.
Почему упадёт?
Хотя наверно не упадет, я же беру конкретную дату для теста, у нее постоянный сдвиг.
Обсуждают сегодня