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我试图澄清我想要得到的结果。希望它现在更有意义。