Возможно, это ошибка использовать strftime в Rails view
August 04, 2019 [ Rails ]
Автор оригинала - Andy Croll
Функция strftime присутствует во многих языках программирования вплоть до языка C. Синтаксис аргументов форматирования фактически не изменился за года и на удивление почти одинаковый во всех языках.
Версия для Ruby полностью описана в документации к классу Time.
Однако, использование функции strftime с большей вероятностью может привести к путанице и неопределенности.
Вместо…
…использования strftime в ваших views для форматирования даты и времени
<%= @user.last_signed_in_at.strftime("%m-%e-%y %H:%M") %>Используй…
… встроенные в Rails форматы даты и времени. Или добавь их, как это делаю я, создав свой :stamp формат для Date и Time.
config/initializers/time_formats.rb
Date::DATE_FORMATS[:stamp] = "%Y%m%d" # YYYYMMDD
Time::DATE_FORMATS[:stamp] = "%Y%m%d%H%M%S" # YYYYMMDDHHMMSSТогда в ваших views:
<%= @user.last_signed_in_at.to_s(:stamp) %>Почему?
Используя функцию с запутанным и сложным аргументом ты каждый раз можешь использовать её по другому, что ведет к неопределенности.
Главное преимущество использования глобально настроенного форматирования заключается в помощи остальным разработчикам, которые придут после тебя включая “будущего” себя самого же. Как результат - строго определенное количество путей для представления времени в твоем приложении. Это пощадит будущих разработчиков от написания кучи своих форматов.
Пользователь тоже выигрывает от такого подхода. Если дата и время всегда отображаются одинаково - пользователю легче и удобней их читать. Убедись, например, что пользователь всегда видит “11 Окт”, а не “Окт 11”. Мелочь, но думаю, того стоит.
Вот несколько ресурсов, которые помогут тебе <%=username%> выбрать нужное форматирование для даты:
For A Good Strftime - содержит в красивом виде набор возможных вариантов для strftime и позволит в живом режиме сконфигурировать любой формат.
Strftimer - даёт возможность ввести дату в нужном формате, а затем возвращает вам формат для strftime, который и будет форматировать дату в изначально заданный формат.
Я никогда не мог запомнить форматы Date и Time которые, предоставляются по умолчанию, плюс ко всему, их сложно найти в документации и поэтому я создал страницу с стандартными форматами даты и времени в Rails.
Почему нет?
При использовании strftime в Rails view нет никакой проблемы с производительностью. Здесь самое главное организация и последовательность.