Sha256: 20619bc79c0bdf3bb41060f274e0ac0f56e7c9b491838adf165dd01349b85a46

Contents?: true

Size: 1.58 KB

Versions: 7

Compression:

Stored size: 1.58 KB

Contents

module JactiveSupport #:nodoc:
  module JavaExtensions #:nodoc:
    module Date #:nodoc:
      module Calculations
        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
        }
        
        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
        
        def age(since=java.util.Date.new)
          difference(:years, since)
        end
        
        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
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
jactive_support-2.1.2 lib/jactive_support/java_ext/date/calculations.rb
jactive_support-2.1.1 lib/jactive_support/java_ext/date/calculations.rb
jactive_support-2.1.0 lib/jactive_support/java_ext/date/calculations.rb
jactive_support-2.0.0 lib/jactive_support/java_ext/date/calculations.rb
jactive_support-1.0.2 lib/jactive_support/java_ext/date/calculations.rb
jactive_support-1.0.1-universal-java-1.6 lib/jactive_support/java_ext/date/calculations.rb
jactive_support-1.0.0-universal-java-1.6 lib/jactive_support/java_ext/date/calculations.rb