Class: Time

Inherits:
Object
  • Object
show all
Includes:
OpenHAB::CoreExt::Between, OpenHAB::CoreExt::Ephemeris, OpenHAB::CoreExt::TimePredicates
Defined in:
lib/openhab/core_ext/ruby/time.rb

Overview

Extensions to Time

Instance Method Summary collapse

Methods included from OpenHAB::CoreExt::TimePredicates

#within?

Methods included from OpenHAB::CoreExt::Ephemeris

#days_until, #holiday, #holiday?, #in_dayset?, #next_holiday, #weekend?

Methods included from OpenHAB::CoreExt::Between

#between?

Instance Method Details

#coerce(other) ⇒ Array?

Converts to a ZonedDateTime if other is also convertible to a ZonedDateTime.

Parameters:

Returns:



118
119
120
121
122
123
124
# File 'lib/openhab/core_ext/ruby/time.rb', line 118

def coerce(other)
  logger.trace { "Coercing #{self} as a request from #{other.class}" }
  return unless other.respond_to?(:to_zoned_date_time)

  zdt = to_zoned_date_time
  [other.to_zoned_date_time(zdt), zdt]
end

#minus_with_temporal(other) ⇒ ZonedDateTime, ... Also known as: -

Extends #- to allow subtracting a TemporalAmount or any other date/time class that responds to #to_zoned_date_time.

Subtractions with another object of the same class (e.g. Time - Other Time, or DateTime - Other DateTime) remains unchanged from its original behavior.

Examples:

Time - Duration -> ZonedDateTime

zdt_one_hour_ago = Time.now - 1.hour

Time - ZonedDateTime -> Duration

java_duration = Time.now - 1.hour.ago

Time - Numeric -> Time

time_one_hour_ago = Time - 3600

Time - Time -> Float

one_day_in_secs = Time.new(2002, 10, 31) - Time.new(2002, 10, 30)

Parameters:

Returns:



58
59
60
61
62
63
64
65
66
67
# File 'lib/openhab/core_ext/ruby/time.rb', line 58

def minus_with_temporal(other)
  return to_zoned_date_time - other.to_temporal_amount if other.respond_to?(:to_temporal_amount)

  # Exclude subtracting against the same class
  if other.respond_to?(:to_zoned_date_time) && !other.is_a?(self.class)
    return to_zoned_date_time - other.to_zoned_date_time
  end

  minus_without_temporal(other)
end

#plus_with_temporal(other) ⇒ ZonedDateTime, Time Also known as: +

Extends #+ to allow adding a TemporalAmount

Parameters:

Returns:



23
24
25
26
27
# File 'lib/openhab/core_ext/ruby/time.rb', line 23

def plus_with_temporal(other)
  return to_zoned_date_time + other.to_temporal_amount if other.respond_to?(:to_temporal_amount)

  plus_without_temporal(other)
end

#to_instant(_context = nil) ⇒ Instant

Returns:



107
108
109
# File 'lib/openhab/core_ext/ruby/time.rb', line 107

def to_instant(_context = nil)
  to_java(java.time.Instant)
end

#to_local_date(_context = nil) ⇒ LocalDate

Returns:



72
73
74
# File 'lib/openhab/core_ext/ruby/time.rb', line 72

def to_local_date(_context = nil)
  java.time.LocalDate.of(year, month, day)
end

#to_local_timeLocalTime

Returns:



78
# File 'lib/openhab/core_ext/ruby/time.rb', line 78

def_delegator :to_zoned_date_time, :to_local_time

#to_monthMonth

Returns:



81
82
83
# File 'lib/openhab/core_ext/ruby/time.rb', line 81

def to_month
  java.time.Month.of(month)
end

#to_month_dayMonthDay

Returns:



86
87
88
# File 'lib/openhab/core_ext/ruby/time.rb', line 86

def to_month_day
  java.time.MonthDay.of(month, day)
end

#to_zoned_date_time(context = nil) ⇒ ZonedDateTime

Parameters:

  • context (ZonedDateTime, nil) (defaults to: nil)

    A ZonedDateTime used to fill in missing fields during conversion. Not used in this class.

Returns:



102
103
104
# File 'lib/openhab/core_ext/ruby/time.rb', line 102

def to_zoned_date_time(context = nil) # rubocop:disable Lint/UnusedMethodArgument
  to_java(java.time.ZonedDateTime)
end

#today?true, false

Returns true if the date, converted to the system time zone, is today.

This is the equivalent of checking if the current datetime is between midnight and end of the day of the system time zone.

Returns:

  • (true, false)


96
# File 'lib/openhab/core_ext/ruby/time.rb', line 96

def_delegators :to_zoned_date_time, :yesterday?, :today?, :tomorrow?

#tomorrow?true, false

Returns true if the date, converted to the system time zone, is tomorrow.

Returns:

  • (true, false)


96
# File 'lib/openhab/core_ext/ruby/time.rb', line 96

def_delegators :to_zoned_date_time, :yesterday?, :today?, :tomorrow?

#yesterday?true, false

Returns true if the date, converted to the system time zone, is yesterday.

Returns:

  • (true, false)


96
# File 'lib/openhab/core_ext/ruby/time.rb', line 96

def_delegators :to_zoned_date_time, :yesterday?, :today?, :tomorrow?