Ruby在你的工作日(周末除外)找到约会对象
我想在输入日期时创建一个def get日。除周末外,我们每周工作5天。Ruby在你的工作日(周末除外)找到约会对象,ruby,date,ruby-on-rails-4,Ruby,Date,Ruby On Rails 4,我想在输入日期时创建一个def get日。除周末外,我们每周工作5天。 截止日期:2018年2月27日 您输入:3->输出:2018年3月2日 您输入:5->输出:06/03/2018 您输入:7->输出:08/03/2018 您输入:10->输出:13/03/2018 我的代码: require 'date' def next_week d, c return d + 7 * c end def my_add_day day d = Date.today d = ne
截止日期:2018年2月27日
您输入:3->输出:2018年3月2日
您输入:5->输出:06/03/2018
您输入:7->输出:08/03/2018
您输入:10->输出:13/03/2018
我的代码:
require 'date'
def next_week d, c
return d + 7 * c
end
def my_add_day day
d = Date.today
d = next_week d, day/5
day = day % 5
if (6 - d.wday) > day
d = d + day
else
d = d + day + 2
end
return d
end
您可以使用gem
def add_working_days date,num
num.times.inject(date)do | date|
case date.wday
当5时,则日期+3
当6时,则日期+2
其他日期+1
终止
终止
终止
主要的▶ 添加工作日日期。今天,3
#⇒ #
主要的▶ 添加工作日日期。今天,5
#⇒ #
主要的▶ 添加工作日日期。今天,7
#⇒ #
主要的▶ 添加工作日日期。今天,10
#⇒ #
def添加工作日日期,num
num.times.inject(date)do | date|
case date.wday
当5时,则日期+3
当6时,则日期+2
其他日期+1
终止
终止
终止
主要的▶ 添加工作日日期。今天,3
#⇒ #
主要的▶ 添加工作日日期。今天,5
#⇒ #
主要的▶ 添加工作日日期。今天,7
#⇒ #
主要的▶ 添加工作日日期。今天,10
#⇒ #
使用gem(它允许额外的功能,例如定义BusinessTime::Config.holidays
),这可以写成:
1.business_day.after(date)
或者作为更通用的辅助方法:
def add_working_days(date, num)
num.business_days.after(date)
end
如果这是应用程序中需要解决的常见/复杂问题,我建议使用此库。使用gem(它允许额外的功能,例如定义BusinessTime::Config.holidays
),这可以写成:
1.business_day.after(date)
或者作为更通用的辅助方法:
def add_working_days(date, num)
num.business_days.after(date)
end
如果这是应用程序中需要解决的常见/复杂问题,我建议您使用此库。您可以使用ruby中的a跳过未来的所有周六和周日,并以函数式的方式获取下一个工作日的日期,而无需任何条件
def next_workday(number_of_days)
(DateTime.now..DateTime::Infinity.new)
.lazy
.reject { |x| x.saturday? || x.sunday? }
.drop(number_of_days)
.first
end
您可以使用ruby中的a跳过未来所有的星期六和星期天,并以函数式的方式获取下一个工作日的日期,而不带任何条件
def next_workday(number_of_days)
(DateTime.now..DateTime::Infinity.new)
.lazy
.reject { |x| x.saturday? || x.sunday? }
.drop(number_of_days)
.first
end
旁注:请查看。Ruby项目在基本代码的结构上非常一致,即2个空格选项卡,不需要像这样显式的
return
语句。@TomLord谢谢我记得注:)旁注:查看。Ruby项目在基本代码的结构上非常一致,即2个空格选项卡,不需要像这样的显式return
语句。@TomLord感谢我记得注释:)