БлогNot. Часы хаоса

Часы хаоса

В аду все помешаны на часах и календарях, помогающих дождаться суда. ©

Идея состояла в том, чтобы сделать часы, показывающие время ЧЧ:ММ:СС и дату ДД:ММ:ГГГГ как разложение числа на простые множители в неком графическом виде, но в процессе написания скрипт моментально упростился, пусть так и будет.

Код в основном построен на ленточных часах, интересный момент - разве что вычисление номера секунды в году на Javascript:

let secn = ((new Date() - new Date(parseInt(year),0,1,0,0,0))/1000).toFixed(0);
//year - ранее определённый текущий год ГГГГ (getFullYear)

По замыслу, 3 ленты по 24 ячейки должны были показывать:

  • первая - разложение времени ЧЧММСС (16 позиций ) + обычное время ЧЧ:ММ:CC (8 позиций);
  • вторая - разложение даты ДДММГГГГ (24 позиции). Вычислить количество позиций можно, например, взяв дату 31129999 и подобрав ближайшую сверху степень двойки, равную 33554432 или 225, значит, 24 позиции достаточно, так как очевидно, что самое большое количество сомножителей в разложении будет у степеней двойки (например, 2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2 = 065536, получаем максимум 16 сомножителей для времени ЧЧММСС);
  • третья - разложение номера секунды в году (24 позиции), так как для количества секунд в году 31622400 (за 366 дней) или 31536000 (за 365 дней) имеем ту же самую степень двойки сверху.

Из эстетических соображений количество позиций в строке было сокращено до 16, так что некоторые разложения будут показаны не полностью, такая возможность учтена в коде. Чтобы сделать количество позиций больше, достаточно изменить значение аргумента M функции chaosClock с 16 на нужное при её вызове.

Предполагается, что ширина окна браузера достаточна, чтоб макет не "скакал", но если скачет, то это не баг, а фича. Вообще говоря, код может притормаживать на слабых компьютерах, поэтому покажем скрин и отдельный файл .html, из исходника которого легко увидеть полный исходник скрипта в кодировке Юникода UTF-8, каких-либо внешних файлов не требуется.

Часы хаоса в окнах разной ширины, скриншот, фрагменты окна браузера
Часы хаоса в окнах разной ширины, скриншот, фрагменты окна браузера

 Скрипт Часы хаоса в работе, выполнить (новое окно/вкладка) или скачать (правая кнопка мыши)

Максимальная длина числа в ячейке при достаточной ширине экрана предполагается равной 9 базовым символам (rem), шрифт моноширинный (monospace).

30.10.2022, 05:16 [406 просмотров]


теги: программирование javascript числа время математика

К этой статье пока нет комментариев, Ваш будет первым