2014-10-29 36 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