feat: форматирование времени ожидания в дни/часы/минуты/секунды

This commit is contained in:
deadzilla 2026-07-07 22:19:04 +05:00
parent d62fac7718
commit d1c64a5a2b

View File

@ -156,6 +156,24 @@ class Scheduler:
self._running = False self._running = False
logger.info("Планировщик остановлен") logger.info("Планировщик остановлен")
@staticmethod
def _format_duration(seconds: float) -> str:
"""Форматирует секунды в читаемый вид: '1 дн, 8 ч, 57 мин, 50 сек'."""
days, remainder = divmod(seconds, 86400)
hours, remainder = divmod(remainder, 3600)
minutes, secs = divmod(remainder, 60)
parts = []
if days:
parts.append(f"{int(days)} дн")
if hours:
parts.append(f"{int(hours)} ч")
if minutes:
parts.append(f"{int(minutes)} мин")
parts.append(f"{int(secs)} сек")
return ", ".join(parts)
def _calculate_next_run(self, now: datetime) -> datetime: def _calculate_next_run(self, now: datetime) -> datetime:
"""Рассчитать время следующего запуска.""" """Рассчитать время следующего запуска."""
hour, minute = map(int, self.morning_time.split(":")) hour, minute = map(int, self.morning_time.split(":"))
@ -173,10 +191,9 @@ class Scheduler:
sleep_seconds = (target - now).total_seconds() sleep_seconds = (target - now).total_seconds()
logger.info( logger.info(
"Ожидание: target=%s, sleep=%.0f сек (%.0f мин)", "Ожидание: target=%s, sleep=%s",
target.strftime("%Y-%m-%d %H:%M"), target.strftime("%Y-%m-%d %H:%M"),
sleep_seconds, self._format_duration(sleep_seconds),
sleep_seconds / 60,
) )
# Спим до целевого времени # Спим до целевого времени