Я разрабатываю код для устройства, где библиотека datetime недоступна (обратите внимание: поплавки также недоступны), поэтому я должен выполнить математическую myslef.Как рассчитать день недели с отметки времени? (DST)
Мое время в секундах с 1 января 2000 года (в UTC). В конфигурации устройства у меня есть:
- текущий часовой пояс, как количество часов +/- от UTC
- Dst как количество часов, чтобы добавить
мне нужно знать:
- текущий день недели
- текущий час
Расчет текущий час довольно легко:
timestamp % 86400 # seconds from midnight
Расчет день недели (1-понедельник, 7-воскресенье):
dayofweek = (timestamp - 86400) % (86400*7)/86400
if dayofweek = 0:
dayofweek = 7
примечания:
- 86400 = секунды в один день
Но до расчетов я должен: 1. добавить часовые пояса 2. добавить часы DST
Проблема заключается в том, как рассчитать, следует ли добавлять часы DST (только для европейского летнего времени) или нет? Мне нужно сделать это эффективно. У меня очень ограниченная вычислительная мощность, и мне нужно сделать это как можно быстрее :-)
@selbie, что високосные годы имеют отношение к дню недели? В високосном году мы добавляем 1 день в месяц, а не один день в неделю. Я не разделяю по годам, я разделяю дни/недели. –
мой плохой. Високосный год имеет значение для вычисления года/месяца/дня. Но вы правы в течение дня недели, это не имеет значения. – selbie