【发布时间】:2016-10-15 02:33:18
【问题描述】:
假设我有一个字符串,例如 13:00,即下午 1:00,但只有前两个字符 (13)。如何输出 PM 部分的字符串数据类型?喜欢
'13'.print_ampm()
=> PM
【问题讨论】:
-
转换成一个数,看看是不是至少12?似乎不需要库,除非您正在寻找本地化的 am/pm 字符串。
假设我有一个字符串,例如 13:00,即下午 1:00,但只有前两个字符 (13)。如何输出 PM 部分的字符串数据类型?喜欢
'13'.print_ampm()
=> PM
【问题讨论】:
使用Time#strftime,用于格式化时间。 %p 标志将为您提供大写的“AM”或“PM”:
t = Time.now
# => 2016-10-14 22:37:03 -0400
t.strftime('%p')
=> "PM"
对于不是Time 对象的字符串,请使用:
require 'time'
Time.parse('10:30').strftime('%p')
# => "AM"
Time.parse('23:30').strftime('%p')
# => "PM"
如果你想要小写,请改用%P:
Time.parse('23:30').strftime('%P')
# => "pm"
【讨论】:
处理此问题的一种方法是使用此处定义的 Time.parse 方法: https://ruby-doc.org/stdlib-2.3.1/libdoc/time/rdoc/Time.html#method-c-parse
像这样:
require 'time'
hour = '13'
puts Time.parse("#{hour}:00").strftime('%p') # PM
【讨论】:
'time' 是宝石吗?