Понимание Аллена Дауни «Think Python» Раздел 5.14 Упражнение № 1

1

Ссылка на упражнение можно получить здесь - Раздел 5.14 Упражнение № 1

Цитируя вопрос:

Упражнение 1
...

Напишите сценарий, который читает текущее время и преобразует его в время дня в часах, минутах и секундах, а также количество дней с эпохи.

Возможное решение доступно здесь - Решение

Вышеприведенное решение кажется легким для понимания, но я смущен расчетами/формулами для преобразования времени эпохи в нормальное время суток. Эти строки меня сбивают с толку:

hours = (epoch % seconds_in_a_day) // seconds_in_an_hour + 8
minutes = (epoch % seconds_in_a_day) % seconds_in_an_hour // seconds_in_a_minute
seconds = (epoch % seconds_in_a_day) % seconds_in_an_hour % seconds_in_a_minute

Мой вопрос в том, почему остаток от деления seconds_in_a_day от epoch делится на seconds_in_an_hour а затем к результату добавляется 8. У меня такая же путаница с переменной minutes и seconds. Я пытаюсь понять логику такого расчета, но это довольно запутанно.

Теги:

1 ответ

2
Лучший ответ

Поскольку эпоха составляет всего несколько секунд с 1970 года, мы хотим наблюдать только количество секунд, прошедших сегодня. Это дает первую часть каждой формулы (epoch % seconds_in_a_day).

Теперь, поскольку у нас есть количество секунд, которое прошло сегодня, мы можем разделить его на количество секунд в час, чтобы получить количество часов. 8 здесь добавляется к результату, потому что часовой пояс в Пекине - UTC + 8.

Поскольку у нас также есть секунды в течение дня, в течение нескольких часов и секунд, мы повторяем логику, используемую в течение нескольких дней. Если мы знаем, что n секунд истек с начала сегодняшнего дня, мы можем по модулю на этот раз на количество секунд за один час, чтобы получить "оставшееся" количество секунд, прошедшее за последний неполный час. Теперь мы просто разделим его на seconds_in_a_minute чтобы превратить секунды в минуты.

Эта же логика применяется к секундам.

  • 0
    Приятно! Это многое объясняет и проясняет многие сомнения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню