19

Ruby 1.9 プログラムで、現在の時刻を のようにフォーマットしたいThu 1:51 PM。1 日の時間 (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 documentationには、時間の他の形式コードはありません。.lstrip文字列の途中にスペースが入っているので使えません。を使用できます.gsub(/ +/, " ")が、ハックが少なく、より簡単な方法があるかどうか疑問に思っています。

4

1 に答える 1

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

%-lの代わりに書いてください%l-先頭のスペースとゼロを取り除きます。

-他のフォーマットコードでも使用できます。Ruby の strftime ドキュメントには%-mとについても言及されていますが、任意のコードで%-d使用できることについては言及されていません。-したがって、%-Iと同じ結果になり%-lます。しかし、代わりに を%-l使用すると、最初は何も必要ないことを意味するため、 をお勧めします。それが書き込むスペースはより偶然に見えます。lI

Ruby 1.8 strftimeフォーマット コードの完全なリストも参照できます。これには、-および類似の構文_0. Mac OS X 上の Ruby 1.8 はこれらの拡張構文をサポートしていないと書かれていますが、心配する必要はありません。それらは私の OS X マシン上の Ruby 1.9 で動作します。

于 2012-06-28T18:18:44.923 に答える