我有一個對象,它有一個屬性叫做effective_date,它是Date類型。
從今天起,我必須在一個對象effective_date的3個工作日前完成一項任務。
例如:如果effective_date是星期六,2012年9月29日,我必須在2012年9月25日星期二完成一項任務,即在星期三之前的3個工作日。 。
如果effective_date是2012年9月30日星期日,我必須在2012年9月26日星期三的星期三完成一項任務,也就是星期三前的星期三。
如果effective_date是2012年9月28日星期五,我必須在2012年9月25日星期二完成一項任務,即在星期三之前的3個工作日。 (星期三,星期五,星期五)
我試了一些代碼,但它不適用於所有情況。請幫忙找到2日期之間的工作日數
2
A
回答
3
退房Weekdays gem。它可以讓你做的東西一樣
>> -3.weekdays_from(Date.civil(2012,9,28))
=> Tue, 25 Sep 2012
>> -3.weekdays_from(Date.civil(2012,9,29))
=> Wed, 26 Sep 2012
>> -3.weekdays_from(Date.civil(2012,9,30))
=> Wed, 26 Sep 2012
或也許是做同樣的事情用不同的語法business_time gem:
>> 3.business_days.before(Date.civil(2012,9,28))
=> 2012-09-25 00:00:00 +0200
>> 3.business_days.before(Date.civil(2012,9,29))
=> 2012-09-26 00:00:00 +0200
>> 3.business_days.before(Date.civil(2012,9,30))
=> 2012-09-26 00:00:00 +0200
2
你可以遍歷天,計數,當您去,例如算你可以做
(Date::civil(2012,9,26)..Date::civil(2012,9,30)).count {|date| date.wday >= 1 && date.wday <= 5}
+0
謝謝,我會考慮它:) –
0
讀什麼寶石做月26日和30日之間的工作日數,你也可以做自己的助手方法:
require 'active_support/core'
module Weekdays
WD_AGO_DIFF = Hash.new(1).merge(1=>3, 0=>2)
WD_FROM_DIFF = Hash.new(1).merge(5=>3, 6=>2)
def weekdays_before(date=Time.now)
self.times.inject(date) { |d| d - WD_AGO_DIFF[d.wday].days }
end
def weekdays_after(date=Time.now)
self.times.inject(date) { |d| d + WD_FROM_DIFF[d.wday].days }
end
end
class Fixnum
include Weekdays
end
6.times do |n|
p [n, n.weekdays_before, n.weekdays_after]
end
+0
謝謝你。我會研究代碼。 –
相關問題
- 1. 找到2日期之間的天數?
- 2. python3.2)如何在兩個日期之間找到工作日?
- 3. 需要找到2日的日期之間的SQL Server 2008中
- 4. 在T-SQL 2日期間工作日
- 5. SQL操作日期查詢,找到之間的日期迄今
- 6. 找到日期之間的天數C#
- 7. 查找SQL Server中兩個日期之間的工作日
- 8. 開始日期到結束日期之間的查找時間
- 9. Xcode - 如何找到兩個日期之間的中間日期
- 10. SQL返回2個傳入日期之間的工作天數
- 11. 日期之間的日期Java(作業)
- 12. 計算日期之間的特定工作日的數量
- 13. PHP之間2日期
- 14. 之間有2個日期
- 15. 分鐘日期之間2
- 16. 2個日期之間的JavaScript倒數
- 17. 想要統計兩個日期之間的工作日數
- 18. 兩個日期之間的工作日數[LOGIC]
- 19. 兩個日期之間的工作日數
- 20. 查找兩個日期之間發生的日期日期
- 21. 日期之間的天不工作...
- 22. 顯示2個日期選擇日期之間的天數?
- 23. 另外2個日期列之間的2個日期列
- 24. ORA-30076當試圖找到日期之間的日期
- 25. 在兩個日期之間找到丟失的日期
- 26. PHP日期() - 找到日期之間的錯誤
- 27. 如何找到兩日期之間的具體日期
- 28. 查找匹配2個日期操作之間的匹配
- 29. 找到兩個日期時間數組之間的重複日期python
- 30. 查找2日期時間之間的時差,無視日期部分
非常感謝,我會研究。不知道寶石如何做到這一點。 –
閱讀gem代碼:https://github.com/mdarby/weekdays/blob/master/lib/weekdays.rb'直到x == self; curr_date - = 1.days; x - = 1如果curr_date.weekday ?; 結束# – rewritten
是這樣做,謝謝:) –