在Ruby中,有没有办法(或许是宝石)以"XX:XX"格式处理时间?

A.V*_*rno 1 ruby time

特别地,添加时间(例如11:40 + 00:30 = 12:10)并检查时间是否属于范围(例如(11:00..12:00).include?(11:30)).我知道我可以写一个类,但也许已经存在一个解决方案.内置Time类并不完全是我想要的,因为我对内置的与日期相关的功能不感兴趣.

Joe*_*oel 5

您可以使用strftime任何方式格式化时间.如果您只想要小时和分钟,可以使用:

Time.now.strftime("%H:%M")
 => "08:57"
Run Code Online (Sandbox Code Playgroud)

time.strftime为您提供了格式化所有这些选项

%a - The abbreviated weekday name (“Sun”)

%A - The full weekday name (“Sunday”)

%b - The abbreviated month name (“Jan”)

%B - The full month name (“January”)

%c - The preferred local date and time representation

%d - Day of the month (01..31)

%H - Hour of the day, 24-hour clock (00..23)

%I - Hour of the day, 12-hour clock (01..12)

%j - Day of the year (001..366)

%m - Month of the year (01..12)

%M - Minute of the hour (00..59)

%p - Meridian indicator (“AM” or “PM”)

%S - Second of the minute (00..60)

%U - Week number of the current year, starting with the first Sunday as the first day of the first week (00..53)

%W - Week number of the current year, starting with the first Monday as the firstday of the first week (00..53)

%w - Day of the week (Sunday is 0, 0..6)

%x - Preferred representation for the date alone, no time

%X - Preferred representation for the time alone, no date

%y - Year without a century (00..99)

%Y - Year with century

%Z - Time zone name

%% - Literal “%” character
Run Code Online (Sandbox Code Playgroud)

这是strftime文档的链接

要检查时间是否属于某个范围,您可以使用封面 方法

2.1.5 :003 > (Time.now..Time.now+10).cover?(Time.now)
 => true

2.1.5 :004 > (Time.now..Time.now+10).cover?(Time.now+20)
 => false
Run Code Online (Sandbox Code Playgroud)