Sha256: 16bff03ea261ca743f3fb7327858e4499fc24acf88198fe9d14548e40fd9a217

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

class java::util::Date
  CALCULATION_FIELDS = {
    years: java::util::Calendar::YEAR,
    months: java::util::Calendar::MONTH,
    weeks: java::util::Calendar::WEEK_OF_YEAR,
    days: java::util::Calendar::DAY_OF_MONTH,
    hours: java::util::Calendar::HOUR_OF_DAY,
    minutes: java::util::Calendar::MINUTE,
    seconds: java::util::Calendar::SECOND,
    millis: java::util::Calendar::MILLISECOND
  }

  def advance(options)
    cal = java::util::Calendar.instance
    cal.time = self
    options.each do |field, value|
      cal.add(CALCULATION_FIELDS[field], value)
    end
    cal.time
  end
  
  def age(since = Date.new)
    difference(:years, since)
  end
  
  def difference(field = :years, since = Date.new)
    local_date = org::joda::time::LocalDate.fromDateFields(self)
    since_date = org::joda::time::LocalDate.fromDateFields(since)
    if field == :days
      return org::joda::time::Days.daysBetween(local_date, since_date).days
    elsif field == :months
      return org::joda::time::Months.monthsBetween(local_date, since_date).months
    else
      return org::joda::time::Years.yearsBetween(local_date, since_date).years
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jactive_support-3.0.0 lib/jactive_support/java_ext/date/calculations.rb
jactive_support-3.0.0.pre2 lib/jactive_support/java_ext/date/calculations.rb
jactive_support-3.0.0.pre1 lib/jactive_support/java_ext/date/calculations.rb