2014-10-29 14 views
0

我想获取当天从星期天开始的当前小时。如何在Ruby中获取本周的用户小时

考虑当前时间是

Time.now 
=> 2014-10-29 12:09:23PM +0530 

结果应该是:84

说明:

Sunday - 24 hours 
Monday - 24 hours 
Tuesday - 24hours 
Wednesday - 12 hours 

Total: 84 

怎样才能获得一周的用户小时。 Ruby中有没有可用的方法?或者如何在没有Ruby方法的情况下完成它。

+0

你试过做什么?这会让我们帮助你找出你出错的地方。 – vgoff 2014-10-29 06:47:10

+0

@vgoff如何获取本周的用户小时。看到更新的问题。 – karan 2014-10-29 06:50:22

+1

您是否尝试过获得星期几,并将完成的日数乘以24并添加其余的?我不希望任何东西在一次函数调用中给你这个 - 你需要做数学。您还应该注意,由于DST,日子并不总是有24小时 - 您是否需要考虑这一点? – 2014-10-29 06:51:27

回答

3

您可以使用Time#wdayTime#hour获得一周中的一天和一天中的小时。

Time.now.wday 
#=> 3 
Time.now.hour 
#=> 14 

其余的是基础数学。

2

即使我提高了余浩,我必须说如果你想关注Jon Skeet提出的问题,这不是一个好方法。为此,这里的另一种方法:

(Time.now - (Date.today - Date.today.wday).to_time)/3600 

Date.today是,那么今天。如果你减去一周开始的天数,你会得到星期天。将它转换为Time,这是周日开始的午夜。减法可以让你在现在和之后的秒数。除以3600(和可选的一轮)以获得小时数。 DST的详细信息应该透明地由Time#-处理。

编辑:时区...运行此之前:

ENV['TZ']='EST5EDT' 

(一定否则需要知道时间将其重置回到它曾经是之后,如果任何人,也没有依靠您切换时区。)您也可以使用"America/New_York"。详情请参阅tz list

+0

如何在ruby中的EDT时区完成上述计算。 – karan 2014-10-29 07:49:18