Module: JactiveSupport::JavaExtensions::Date::Calculations

Included in:
javajava::util::Date
Defined in:
lib/jactive_support/java_ext/date/calculations.rb

Constant Summary collapse

CALCULATION_FIELDS =
{
  :years => ::Java::JavaUtil::Calendar::YEAR,
  :months => ::Java::JavaUtil::Calendar::MONTH,
  :weeks => ::Java::JavaUtil::Calendar::WEEK_OF_YEAR,
  :days => ::Java::JavaUtil::Calendar::DAY_OF_MONTH,
  :hours => ::Java::JavaUtil::Calendar::HOUR_OF_DAY,
  :minutes => ::Java::JavaUtil::Calendar::MINUTE,
  :seconds => ::Java::JavaUtil::Calendar::SECOND,
  :millis => ::Java::JavaUtil::Calendar::MILLISECOND
}

Instance Method Summary collapse

Instance Method Details

#advance(options) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/jactive_support/java_ext/date/calculations.rb', line 16

def advance(options)
  cal = ::Java::JavaUtil::Calendar.getInstance
  cal.setTime(self)
  options.each do |field, value|
    cal.add(CALCULATION_FIELDS[field], value)
  end
  cal.getTime
end

#age(since = java.util.Date.new) ⇒ Object



25
26
27
# File 'lib/jactive_support/java_ext/date/calculations.rb', line 25

def age(since=java.util.Date.new)
  difference(:years, since)
end

#difference(field = :years, since = java.util.Date.new) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/jactive_support/java_ext/date/calculations.rb', line 29

def difference(field=:years, since=java.util.Date.new)
  local_date = ::Java::OrgJodaTime::LocalDate.fromDateFields(self)
  since_date = ::Java::OrgJodaTime::LocalDate.fromDateFields(since)
  if field == :days
    return ::Java::OrgJodaTime::Days.daysBetween(local_date, since_date).getDays
  elsif field == :months
    return ::Java::OrgJodaTime::Months.monthsBetween(local_date, since_date).getMonths
  else
    return ::Java::OrgJodaTime::Years.yearsBetween(local_date, since_date).getYears
  end
end