0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Ruby】n営業日前の日付をだす

Last updated at Posted at 2019-01-24

はじめに

いろいろググったけど、nの値が固定されている想定のものばかりだったので、nが変動する場合はこれでいいんじゃないかというメモ。

例は3営業日前をだしてみた。

コード

require 'date'
require 'business_time'
require 'holiday_japan'


hiduke = Date.new(2018, 12, 25)  # 元になる日付を指定 今日でいいならダイレクトにDate.todayでよし

n = 3  # 回数指定

cnt = 0  # 箱作り

n.times do  # n回繰り返し
  cnt += 1

  while  cnt.business_days.ago(hiduke).national_holiday? do  # 祝日かどうか判定
    cnt += 1
  end

end

puts cnt.business_days.ago(hiduke)
実行結果
2018-12-19

おわりに

'business_time'では祝日が休日に含まれないので 'holiday_japan'で祝日判定。振替休日にも対応。
3営業日前だけを判定にすると、1・2営業日前が祝日でもカウントしてしまうのでn回数分判定を繰り返す。

もし今日の日付を元にしたいなら、タイムゾーンの問題がでてくる。

n営業日後を出したいなら ago をafter に変えればOK。

いろんな日付で試してて気付いたけど、大晦日って祝日じゃないんだなあ…
完璧にするなら「国民の祝日」ではないけど一般的な休日も含められるようにする必要あり。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?