Class: Date

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_extend/core/date.rb

Instance Method Summary collapse

Instance Method Details

#contract_after(*afters, less: true) ⇒ Object

Chinese custom after date '2018-01-01'.to_date.contract_after(2.month) => '2018-02-31' '2018-01-31'.to_date.contract_after(1.month) => '2018-02-28'



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/rails_extend/core/date.rb', line 6

def contract_after(*afters, less: true)
  parts = {}
  # todo use inject or something
  afters.each do |after|
    parts.merge! after.parts
  end
  r = ActiveSupport::Duration.new(0, parts).after(self)

  return r unless less

  # if result day less than day, so
  if (parts.keys & [:months, :years]).present?
    r.day < day ? r : r - 1
  else
    r
  end
end

#parts ⇒ Object



24
25
26
27
28
29
30
# File 'lib/rails_extend/core/date.rb', line 24

def parts
  {
    year: year,
    month: month,
    day: day
  }
end