gpt4 book ai didi

ruby - 我无法获得 ruby 的第 15 个工作日

转载 作者:数据小太阳 更新时间:2023-10-29 08:42:30 26 4
gpt4 key购买 nike

我无法获得下一个第 15 天,但不是工作日。

DateTime.now.next_day(+15).strftime('%d %^B %Y')

如何获得下一个第 15 个工作日?

最佳答案

您只是将当前日期增加了 15 天。你想要的是调整日期:

date = DateTime.now

if (date.mday > 15)
date = date.next_month
end

date = date.next_day(15 - date.mday)

如果已经过了当月的 15 号,则调整为下个月的 15 号。

现在可以将其扩展为枚举器:

def each_mday(mday, from: nil)
from ||= DateTime.now

Enumerator.new do |y|
loop do
if (from.mday > mday)
from = from.next_month
end

from = from.next_day(mday - from.mday)

y << from

from += 1
end
end
end

这使得找到符合特定条件的第一天成为可能,例如工作日:

each_mday(15, from: Date.parse('2019-06-14')).find { |d| (1..5).include?(d.wday) }

返回 7 月 15 日的地方,因为 6 月 15 日是周末。

from 参数是可选的,但对于像这样的测试用例以确保其正常工作非常有用。

关于ruby - 我无法获得 ruby 的第 15 个工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55318349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com