Ruby 基于每个用户创建一个用户数组';s工作日和时间属性

Ruby 基于每个用户创建一个用户数组';s工作日和时间属性,ruby,datetime,range,Ruby,Datetime,Range,我有下面的代码,它根据“全局”工作日和时间创建一个用户数组 def current_time # server_time = Time.now server_time = Time.local(2013,8,19,8,30) # for time simulation local_offset = (2 * 60 * 60) local_time = server_time + local_offset end def hours_mon_to_thurs?(date)

我有下面的代码,它根据“全局”工作日和时间创建一个用户数组

def current_time
  # server_time = Time.now
  server_time = Time.local(2013,8,19,8,30) # for time simulation
  local_offset = (2 * 60 * 60)
  local_time = server_time + local_offset
end

def hours_mon_to_thurs?(date)
    ["Monday", "Tuesday", "Wednesday", "Thursday"].include?(date.strftime("%A")) && ("08:30"..."17:00").include?(date.strftime("%H:%M"))
end

def hours_fri?(date)
    ["Friday"].include?(date.strftime("%A")) && ("08:30"..."15:00").include?(date.strftime("%H:%M"))
end

def hours_lunch?(date)
    !("12:00"..."13:00").include?(date.strftime("%H:%M"))
end


if hours_mon_to_thurs?(current_time) && hours_lunch?(current_time)
  p "[USER1, USER2]"
elsif hours_fri?(current_time) && hours_lunch?(current_time)
  p "USER2"
else
  p "no users"
end
这段代码可以工作,但我想更改数组的创建方式,以便每个用户都有工作日和时间作为属性,如果它们可用,则应将它们添加到数组中。让我举个例子

用户1-办公时间

星期一 08:30 - 12:00, 13:00-17:00

星期二 08:30 - 12:00, 13:00-17:00

星期三 08:30 - 12:00, 13:00-17:00

星期四 08:30 - 12:00, 13:00-17:00

用户2-办公时间

星期二 08:30 - 12:00, 13:00-17:00

星期四 08:30 - 12:00, 13:00-17:00

星期五 08:30 - 12:00, 13:00-15:00

定义了每个用户的办公时间后,我希望有一个与上面示例中类似的方法。大概是这样的:

  • 对于每个用户
  • 如果当前时间在用户的办公时间内
  • 将用户添加到阵列
  • 否则,如果当前时间不在用户的办公时间内
  • 数组为空

我目前没有使用数据库,我不知道如何最好地组织每个用户的办公时间,使其与当前时间是否在用户的时间范围内相匹配,然后将其添加到数组中。

这里有unlcear思想。首先,
“08:30”…“17:00”
包括字符串
08:30
08:99
09:30
09:99
等。但是,这不会停止您的设计工作。其次是
!(“08:30”…“15:00”)
引发警告并始终返回
false
。那不是你想要的。而且,你不允许在不同的日子里工作不同的时间。你应该准确地描述你想要得到的结果,然后从那里开始。@Borodin我试图澄清我想要得到的结果。希望它现在更有意义。