Калькулятор: когда я закончу школу
Укажите последний учебный день и время окончания уроков — калькулятор покажет, сколько осталось до конца учёбы.
Логика вычислений
Калькулятор показывает, сколько времени осталось до конца учебного года. По заданным последнему учебному дню и времени окончания уроков формируется целевой момент времени, из которого вычитается текущий момент — получается остаток до окончания учёбы. Этот остаток выражается одновременно в разных единицах: в полных днях, часах и минутах с разбивкой и отдельно в общем количестве часов и минут.
Сначала находится остаток времени до целевого момента:
Δ = T_кон − T_тек
где:
- Δ — остаток времени до конца учёбы, мс;
- T_кон — целевой момент: последний учебный день и время окончания уроков;
- T_тек — текущий момент времени.
Если целевой момент уже наступил (остаток нулевой или отрицательный), учёба считается оконченной и остаток принимается равным нулю. Дальше остаток переводится в привычные единицы.
Общее количество часов и минут — это весь остаток, выраженный целиком в одной единице:
Σ_ч = Δ / 3 600 000 Σ_м = Δ / 60 000
где:
- Σ_ч — всего часов до конца учёбы, ч;
- Σ_м — всего минут до конца учёбы, мин;
- 3 600 000 и 60 000 — число миллисекунд в одном часе и в одной минуте.
Разбивка остатка на дни, часы и минуты выполняется последовательным выделением полных единиц и остатка от деления:
D = ⌊ Δ / 86 400 000 ⌋ H = ⌊ (Δ mod 86 400 000) / 3 600 000 ⌋ M = ⌊ (Δ mod 3 600 000) / 60 000 ⌋
где:
- D — полных дней до конца учёбы, дн;
- H — оставшихся часов сверх полных дней (0–23), ч;
- M — оставшихся минут сверх полных часов (0–59), мин;
- 86 400 000 — число миллисекунд в одних сутках;
- ⌊ ⌋ — выделение целой части (остаются только полные единицы);
- mod — остаток от деления, то есть время, не вошедшее в более крупную единицу.
Примеры расчётов
| Остаток Δ, мс | Дней D, дн | Часов H, ч | Минут M, мин | Всего часов Σ_ч, ч | Всего минут Σ_м, мин | Комментарий |
|---|---|---|---|---|---|---|
| 8 640 000 000 | ⌊8 640 000 000 / 86 400 000⌋ = 100 | 0 | 0 | 2 400 | 144 000 | Ровно 100 суток — круглый пример |
| 3 917 700 000 | 45 | 8 | 15 | 1 088,25 | 65 295 | 45 дн 8 ч 15 мин — типичный остаток |
| 2 612 520 000 | 30 | 5 | 42 | 725,7 | 43 542 | 30 дн 5 ч 42 мин — произвольное время |
| 649 800 000 | 7 | 12 | 30 | 180,5 | 10 830 | 7 дн 12 ч 30 мин — последняя неделя |
| 86 400 000 | 1 | 0 | 0 | 24 | 1 440 | Ровно сутки до конца учёбы |
| 86 340 000 | 0 | 23 | 59 | 23,98 | 1 439 | Граница: меньше суток, дней уже 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | Учёба окончена — момент уже наступил |
