比较时间,没有日期?

use*_*543 28 ruby ruby-on-rails

我需要编写一种方法来检查是否Time.now在商店的营业时间和营业时间之间.

打开和关闭时间保存为时间对象,但我无法比较核心,因为商店节省了时间,2012/2/2所以开放时间将是这样的:

2012-02-02 02:30:00 UTC
Run Code Online (Sandbox Code Playgroud)

并且Time.now将是:

07:23 +0200
Run Code Online (Sandbox Code Playgroud)

如何比较没有日期部分的时间部分?

Мал*_*евъ 36

Time例如,您可以比较没有日期部分,如下所示:

time1.utc.strftime( "%H%M%S%N" ) <= time2.utc.strftime( "%H%M%S%N" )
Run Code Online (Sandbox Code Playgroud)


rew*_*ten 5

有一个很好的库https://github.com/bokmann/business_time可以为您完成此操作以及更多操作。

BusinessTime::Config.with(beginning_of_workday: "8:30 am", end_of_workday: "5:30 pm") do
  Time.now.during_business_hours?
end
Run Code Online (Sandbox Code Playgroud)

它将为您做更多的事情,例如将时间滚动到下一个或上一个开放时间,计算两个时间戳之间的营业时间等。


Alt*_*eez 4

您可以将时间分解为小时、分钟和秒。

时间类中所述:

t = Time.now
hour = t.hour
minute = t.min
seconds = t.sec
Run Code Online (Sandbox Code Playgroud)

由于您只需比较是否在 2 小时内,因此您可以按如下方式检查。

if hour > openingHour and hour < closingHour
Run Code Online (Sandbox Code Playgroud)

  • OP如何比较这三个值? (3认同)