Ruby strftime:如果为零则不显示分钟

Ruby strftime: don't show minutes if zero

我正在尝试实现这种输出风格:

Time.new(2021,9,19,6,0,0) => "6am"
Time.new(2021,9,19,6,30,0) => "6:30am"

我得到的最接近的是 strftime('%l:%-M%P'),它产生:

Time.new(2021,9,19,6,0,0).strftime('%-l:%-M%P') => "6:0am"
Time.new(2021,9,19,6,30,0).strftime('%-l:%-M%P') => "6:30am"

是否有一种已知的方法可以在零时抑制 %M%-M,或者我需要在这里做我自己的事情吗?

您可能需要自己做事,但这是一种简单的方法。

time.strftime('%-l:%M%P').sub(':00', '')