WorkDay
Gem para verificação de dias úteis e cálculo entre datas úteis.
Installation
Add this line to your application's Gemfile:
gem 'work_day'
And then execute:
$ bundle
Or install it yourself as:
$ gem install work_day
Usage
WorkDay.work_day?(date)
Verifica se uma data é um dia útil
> WorkDay.work_day?("2017-01-01")
=> false
> WorkDay.work_day?("2017-01-05")
=> true
WorkDay.last_until(date, days = 0)
Retorna o n-dia útil até certa data.
Passando uma data útil, com 0 dias
> WorkDay.last_until("2017-01-05")
=> Thu, 05 Jan 2017 # retorna a própria data por ser uma data útil
Passando uma data não-útil, com 0 dias
> WorkDay.last_until("2017-01-08")
=> Fri, 06 Jan 2017 # retorna o primeiro dia útil anterior a data passada
Passando uma data útil, com 2 dias
> WorkDay.last_until("2017-01-05", 2)
=> Tue, 03 Jan 2017 # retorna a data 2 dias úteis anteriores a data passada
Passando uma data não-útil, com 2 dias
> WorkDay.last_until("2017-01-08", 2)
=> Wed, 04 Jan 2017 # retorna a data 2 dias úteis anteriores a data passada
WorkDay.next_after(date, days = 1)
Retorna o n-dia útil após certa data
Passando uma data útil, com 2 dias
> WorkDay.next_after("2017-01-05", 2)
=> Mon, 09 Jan 2017
Passando uma data não-útil, com 2 dias
> WorkDay.next_after("2017-01-07", 2)
=> Tue, 10 Jan 2017
Passando uma data útil, com 1 dia
> WorkDay.next_after("2017-01-05")
=> Fri, 06 Jan 2017
Passando uma data não-útil, com 1 dia
> WorkDay.next_after("2017-01-07")
=> Mon, 09 Jan 2017
WorkDay.between(start_date, end_date)
Lista todas as datas úteis entre 2 datas (start_date
e end_date
)
> WorkDay.between("2013-01-05", "2013-01-10")
=> [Mon, 07 Jan 2013,
Tue, 08 Jan 2013,
Wed, 09 Jan 2013,
Thu, 10 Jan 2013]
Escolhendo calendários
Pode ser utilizado mais de um calendário ao mesmo tempo, através de qualquer um dos nomes disponíveis:
london
:london
,londres
new_york
:new_york
,nova_iorque
brazil
:brazil
,brasil
,anbima
sinacor
:sinacor
,b3
,sao_paulo
Configurando os calendários default
> WorkDay.calendars(['london', 'new_york'])
> WorkDay.work_day?("2018-05-28")
=> false
Usando calendários apenas em um bloco específico (ex.: por request)
> WorkDay.calendars(['new_york'])
> WorkDay.work_day?("2018-07-04")
=> false
> WorkDay.use_calendars('london') { WorkDay.work_day?("2018-07-04") }
=> true
License
The gem is available as open source under the terms of the MIT License.