我试图生成一个时间对象,初始化为特定工作日的下一个实例和午夜过后的分钟数。生成时间对象从午夜开始的工作日和分钟数
我的数据(代表日程表)看起来像:周日,开始,结束。平日是一周中的0到6之间的一天,并且开始/结束是表示在该特定工作日午夜过去几分钟的整数。
我希望能够做的是在下次获得Time对象时,这样可以更灵活地使用前端开始/结束时间。
有谁知道如何做到这一点?我用Time.utc修饰没有太大的成功。
我试图生成一个时间对象,初始化为特定工作日的下一个实例和午夜过后的分钟数。生成时间对象从午夜开始的工作日和分钟数
我的数据(代表日程表)看起来像:周日,开始,结束。平日是一周中的0到6之间的一天,并且开始/结束是表示在该特定工作日午夜过去几分钟的整数。
我希望能够做的是在下次获得Time对象时,这样可以更灵活地使用前端开始/结束时间。
有谁知道如何做到这一点?我用Time.utc修饰没有太大的成功。
不知道如果我正确地解释这...它那里给出一个工作日,你会找到那个工作日的下一个可用日期?例如,如果今天是星期二,并且您的日程安排为星期四,那么时间对象将在这个星期四午夜?如果是这样的话,这样的事情应该工作:
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
凡平日是在你的日程安排对象的值。再一次,我不是100%确定你在问什么。这里start_time和end_time是代表下一个工作日的时间对象,并添加了相应的分钟数。
这个窍门 - 我完全失败沟通正常,但你有想法!如果它已经开始,我确实使用if day_difference < 0 or (day_difference == 0 and self.start < ((Time.now.hour*60)+Time.now.min))
去下一次。 –
JamesHarrison
2010-11-09 16:09:53
可以为此做一些事情沿着这些路线的基本的东西,如下列:
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看起来他们是适用于你可能会想什么
这对他的情况不起作用,因为day_of_week对应一天(例如:星期二= 2)。如果今天是星期一(1),则current_date + day_of_week.days会给出1 + 2,即星期三。你需要采取差异来找到合适的一天。 – pushmatrix 2010-11-09 06:43:27
哎呀,忘了添加在'.beginning_of_week'感谢赶上 – Jeremy 2010-11-09 23:54:27
如何显示一些示例日期和时间? – 2010-11-09 06:40:48