You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby使用strftime格式化时间时如何在分钟为0时隐藏分钟字段

解决方法

Ruby 原生的 strftime 没有内置支持「分钟为0时自动隐藏分钟部分」的格式化占位符,需要自行补充少量逻辑实现,这里提供两种常用实现方案:

方案1:条件判断(推荐)

逻辑清晰可读性高,性能无额外损耗,适合绝大多数场景:

# 可以封装为辅助方法
def format_custom_time(time)
  time.min.zero? ? time.strftime('%-l%P') : time.strftime('%-l:%-M%P')
end

# 测试效果
format_custom_time(Time.new(2021,9,19,6,0,0))  # => "6am"
format_custom_time(Time.new(2021,9,19,6,30,0)) # => "6:30am"

方案2:正则替换(单行实现)

如果不想单独封装方法,可以在格式化后用正则替换掉整点的0分部分:

Time.new(2021,9,19,6,0,0).strftime('%-l:%-M%P').sub(/:0(?=[ap]m)/, '') # => "6am"
Time.new(2021,9,19,6,30,0).strftime('%-l:%-M%P').sub(/:0(?=[ap]m)/, '') # => "6:30am"

如果是在 Rails 项目中使用,也可以把这个规则注册为自定义的时间格式,全局复用。


内容的提问来源于stack exchange,提问作者Chiperific

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:09:02