我想確定一個日期至少要在星期三的14天之外。意思是如果日期是3/14/16,它會將其設置爲3/30/16。如果是3/10,那也是3/30。尋找使用紅寶石。根據天數和星期幾來設置日期?
所以我的想法是這樣的:
def next_weds
self + (14 + closest_wed_day)
end
的問題是如何定義wedday意思,我如何才能最接近週三上加14到該日期。所以,如果今天是星期二它會增加15如果是週四這將增加20
我想確定一個日期至少要在星期三的14天之外。意思是如果日期是3/14/16,它會將其設置爲3/30/16。如果是3/10,那也是3/30。尋找使用紅寶石。根據天數和星期幾來設置日期?
所以我的想法是這樣的:
def next_weds
self + (14 + closest_wed_day)
end
的問題是如何定義wedday意思,我如何才能最接近週三上加14到該日期。所以,如果今天是星期二它會增加15如果是週四這將增加20
https://github.com/mojombo/chronic/做到這一點很容易。這裏是你的例子:
Chronic.parse('14 days from now wednesday')
=> 2016-04-20 00:00:00 -0500
非常感謝您的幫助! – user3335830
這是一個純粹的Ruby解決方案。
require 'date'
def first_day_of_week(min_days_from_now, day_of_week)
today = Date.today
days_until_day_of_week = (7 + day_of_week - today.wday) % 7
today + days_until_day_of_week +
7*(([min_days_from_now-days_until_day_of_week, 0].max/7.0).ceil)
end
今天是:
today = Date.today
#=> #<Date: 2016-03-31 ((2457479j,0s,0n),+0s,2299161j)>
wday = today.wday
#=> 4
Date::DAYNAMES[wday]
#=> "Thursday"
假設:
day_of_week = 3
Date::DAYNAMES[day_of_week]
#=> "Wednesday"
然後:
puts " # min_days_from_now date wday"
(0..14).each do |min_days_from_now|
fd = first_day_of_week(min_days_from_now, day_of_week)
puts " # %2d %s %d" % [min_days_from_now, fd.to_s, fd.wday]
end
# min_days_from_now date wday
# 0 2016-04-06 3
# 1 2016-04-06 3
# 2 2016-04-06 3
# 3 2016-04-06 3
# 4 2016-04-06 3
# 5 2016-04-06 3
# 6 2016-04-06 3
# 7 2016-04-13 3
# 8 2016-04-13 3
# 9 2016-04-13 3
# 10 2016-04-13 3
# 11 2016-04-13 3
# 12 2016-04-13 3
# 13 2016-04-13 3
# 14 2016-04-20 3
你嘗試過什麼?我們將很樂意幫助您調試您的代碼,但我們不會在這裏爲您編寫代碼... –
剛剛添加了我所擁有的 – user3335830