1. JavaScript / Говнокод #25142

    −1

    1. 1
    2. 2
    3. 3
    d = new Date();
    ds = d.getHours() + ":" + (d.getMinutes() / 100).toFixed(2).split(".")[1] + ":" + (d.getSeconds() / 100).toFixed(2).split(".")[1];
    // а как бы вы сделали это красивее, в одну строчку (или две) и без сторонних библиотек?

    Вывод времени с нулями в минутах и секундах (если они меньше 10): 5:05:00, 11:01:01, 23:03:03
    Чтобы в логах (при чтении с моноширинным шрифтом) время имело одинаковую ширину.
    // P.S.: к сожалению в JS нет стандартной функции format для даты.

    Запостил: epicode, 03 Декабря 2018

    Комментарии (8) RSS

    • Действительно, на методы toString и toLocaleString полагаться нельзя, потому что в разных браузерах они реализованы по-разному.

      printf и прочие функции форматирования в JS из коробки отсутствуют. Даже в ES6 ничего красивого не завезли. Завезли какие-то бесполезные шаблоны, которые можно заменить обычной ко-ко-ко-конкатенацией:
      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

      Можно добавлять нолики с помощью регулярных выражений, но это будет не так красиво.
      Ответить
    • Конвертируй в филиппинские песо.
      Ответить
    • const ds = new Date().toTimeString().split(' ')[0]
      Ответить
    • (d.getMinutes() + 100).toString().mid(1) или как его
      Ответить
      • С точки зрения пирфоманса это лучше, чем деление. Хотя какой может быть пирфоманс у JS?

        В любом случае меньше шансов, что при округлении что-нибудь пойдёт не так.
        Ответить

    Добавить комментарий