Как мне написать час времени без начального нуля или пробела?
В программе на 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(/ +/, " ")
, но мне интересно, есть ли менее хакерский, более простой способ.
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.