我正在尝试生成一个Time对象,该对象已初始化为特定工作日的下一个实例以及午夜过后的分钟数。
我的数据(代表时间表)看起来像:工作日,开始,结束。工作日是0到6之间的星期几,开始/结束是表示特定工作日午夜过后几分钟的整数。
我希望能够做的是下一次获得Time对象,以便我可以更灵活地使用前端的开始/结束时间。
有谁知道怎么做?我用Time.utc修补了一下但没有取得多大成功。
答案 0 :(得分:1)
您可以通过以下方式为这一行做一些基本的事情:
class Schedule
attr_accessor :day_of_week, :start_minute, :finish_minute
def start(current_date = Time.zone.now)
current_date.beginning_of_week + day_of_week.days + start_minute.minutes
end
def finish(current_date = Time.zone.now)
current_date.beginning_of_week + day_of_week.days + finish_minute.minutes
end
def length
(finish_minute - start_minute).minutes
end
end
由于这非常简陋,而且我不确定你想要使用它的确切内容,我建议查看this post ice_cube中提到的一些库,而business_time看起来它们适用于你可能想要什么
答案 1 :(得分:1)
我不确定我是否正确地解释了这一点......是否在工作日的某个地方,您会找到工作日的下一个可用日期?例如,如果今天是星期二,而你的日程安排是星期四,那么时间对象将在星期四的午夜?如果是这种情况,这样的事情应该有效:
day_difference = @weekday - Time.now.wday
# If the difference is in the past, then add 7 so that it is next week.
if day_difference < 0
day_difference = day_difference + 7
end
next_date = Time.now.midnight + day_difference.days
start_time = next_date + @start.minutes
end_time = next_date + @finish.minutes
工作日是Schedule对象中的值。再一次,我不是100%肯定你在问什么。这里start_time和end_time是表示下一个工作日的时间对象,并添加了相应的分钟数。