根据每个用户的工作日和时间属性创建一组用户

时间:2013-08-18 19:06:56

标签: ruby datetime range

我有以下代码,根据" global"创建一个用户数组。平日和时间。

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

在每个用户的办公时间定义后,我想要采用与上面示例中类似的方法。像这样:

    每个用户
  • 如果当前时间在用户的办公时间内
  • 将用户添加到数组
  • 如果当前时间不在用户范围内,则为<#39;办公时间
  • 数组为空

我目前没有使用数据库,而且我不知道以最佳方式构建每个用户的办公时间,以便在当前时间在用户的时间范围,然后将它们添加到数组中。

0 个答案:

没有答案