【问题标题】:Ruby strftime: don't show minutes if zeroRuby strftime:如果为零,则不显示分钟
【发布时间】:2021-11-13 17:08:22
【问题描述】:

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

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,还是我需要在这里做自己的事情?

【问题讨论】:

    标签: ruby strftime


    【解决方案1】:

    您可能必须自己做,但这是一种简单的方法。

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

    【讨论】:

    • ... 或t = Time.new(2021,9,19,6,0,0); t.strftime("%-l#{t.min.zero? ? '' : ':%-M'}%P") #=> "6am"。同样,t2 = Time.new(2021,9,19,6,30,0); t2.strftime("%-l#{t.min.zero? ? '' : ':%-M'}%P") #=> "6:30am".
    • @CarySwoveland,很好地使用了插值!虽然我确实认为史蒂夫的答案更容易阅读。
    • 亲爱的日记。今天,有人认为我的回答比@CarySwoveland 的要好。 :D
    猜你喜欢
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    相关资源
    最近更新 更多