環境
- ruby 2.4
やりたいこと
業務処理とか書いてて、特定の日が出勤日かどうか判別したい時がある。
ここでいう出勤日というのは
- 月曜日〜金曜日
- 勤労感謝の日とか元旦とかの定められた祝日ではない
を指す。
それをtrue/falseで返してくれるメソッドがほしい
コード
さすがRuby専用のGemがあった。
holiday-jp/holiday_jp-ruby: Japanese holiday.
が、あくまで祝日かどうかしか見ないのでDateクラスから直接叩けるようにカスタマイズした
Gemfileに以下を追加して
gem "holiday_jp"
で、bundle install
すればおk
require "date" require "holiday_jp" class Date def workday? (1..5).include?(self.wday) && HolidayJp.holiday?(self).nil? end end p Date.new(2018,8,17).workday? # true p Date.new(2018,8,18).workday? # false p Date.new(2018,1,1).workday? # true
これでおkholiday_jp自体は2050年まで対応してるらしいので当面は大丈夫だと思われる。Railsでこれを使いたい場合はconfig/initializers/custom_date.rb
とかファイル作って追加、rails再起動すれば動く