Подтвердить что ты не робот

Как написать час времени без ведущего нуля или ведущего пространства?

В программе Ruby 1.9 я хочу отформатировать текущее время как Thu 1:51 PM. Какой формат кода следует использовать для часа дня (1 в этом примере)?

Time.now.strftime '%a %I:%M %p' #=> "Thu 01:51 PM"
Time.now.strftime '%a %l:%M %p' #=> "Thu  1:51 PM"

%I имеет начальный нуль (01). %l имеет ведущее пространство ( 1). Я не вижу никакого другого формата кода в течение часа в документации strftime. Я не могу использовать .lstrip, потому что пространство находится в середине строки. Я мог бы использовать .gsub(/ +/, " "), но Im задавался вопросом, является ли theres менее взломанным, более простым способом.

4b9b3361

Ответ 1

Time.now.strftime '%a %-l:%M %p' #=> "Thu 1:51 PM"

Напишите %-l вместо %l. - разделяет ведущие пробелы и нули.

Вы можете использовать - с другими кодами формата. Документация Ruby strftime даже упоминает %-m и %-d, хотя не упоминается, что вы можете использовать - с любым кодом. Таким образом, %-I даст тот же результат, что и %-l. Но я рекомендую %-l, потому что использование l вместо I означает для меня, что вы ничего не хотите в начале - пространство, которое он пишет, выглядит более случайным.

Вы также можете увидеть исчерпывающий список кодов форматирования Ruby 1,8 strftime, включая те, у которых - и аналогичные синтаксисы _ и 0. В нем говорится, что Ruby 1.8 на Mac OS X не поддерживает эти расширенные синтаксисы, но не беспокойтесь: они работают в Ruby 1.9 на моей машине OS X.