Class: OpenHAB::CoreExt::Java::ZonedDateTime
- Inherits:
-
Object
- Object
- OpenHAB::CoreExt::Java::ZonedDateTime
- Defined in:
- lib/openhab/core_ext/java/zoned_date_time.rb
Overview
Extensions to java.time.ZonedDateTime
Class Attribute Summary collapse
- .now ⇒ ZonedDateTime readonly
Ephemeris Methods collapse
openHAB's built-in holiday definitions are based on bank holidays, so may give some unexpected results. For example, 2022-12-25 is not Christmas in England because it lands on a Sunday that year, so Christmas is considered to be 2022-12-26. See the source for exact definitions. You can always provide your own holiday definitions with holiday_file or holiday_file!.
Forwards ephemeris helper methods to #to_zoned_date_time
provided by
the mixed-in class.
-
#days_until(holiday, holiday_file = nil) ⇒ Integer
Calculate the number of days until a specific holiday.
-
#holiday(holiday_file = nil) ⇒ Symbol?
Name of the holiday for this date.
-
#holiday?(holiday_file = nil) ⇒ true, false
Determines if this date is on a holiday.
-
#in_dayset?(set) ⇒ true, false
Determines if this time is during a specific dayset.
-
#next_holiday(holiday_file = nil) ⇒ Symbol
Name of the closest holiday on or after this date.
-
#weekend? ⇒ true, false
Determines if this time is during a weekend.
Class Method Summary collapse
-
.parse(text, formatter = nil) ⇒ ZonedDateTime
Parses a string into a ZonedDateTime object.
Instance Method Summary collapse
- #+(other) ⇒ ZonedDateTime
- #-(other) ⇒ Duration, ZonedDateTime
- #<=>(other) ⇒ Integer?
-
#coerce(other) ⇒ Array?
Converts
other
to ZonedDateTime, if possible. - #to_date ⇒ Date
-
#to_f ⇒ Float
The number of seconds since the Unix epoch.
-
#to_i ⇒ Integer
The number of seconds since the Unix epoch.
-
#to_instant ⇒ Instant
Converts this object to an Instant.
- #to_local_date(_context = nil) ⇒ LocalDate
- #to_local_time(_context = nil) ⇒ LocalTime
- #to_month ⇒ Month
- #to_month_day ⇒ MonthDay
- #to_time ⇒ Time
- #to_zoned_date_time(context = nil) ⇒ self
-
#today? ⇒ true, false
Returns true if the date, converted to the system time zone, is today.
-
#tomorrow? ⇒ true, false
Returns true if the date, converted to the system time zone, is tomorrow.
-
#yesterday? ⇒ true, false
Returns true if the date, converted to the system time zone, is yesterday.
Methods included from Between
Class Attribute Details
Class Method Details
.parse(text, formatter = nil) ⇒ ZonedDateTime
Parses a string into a ZonedDateTime object.
|
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 24
|
Instance Method Details
#+(other) ⇒ ZonedDateTime
61 62 63 64 65 66 67 68 69 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 61 def +(other) if other.is_a?(Numeric) plus(other.seconds) elsif other.is_a?(QuantityType) plus(other.to_temporal_amount) else plus(other) end end |
#-(other) ⇒ Duration, ZonedDateTime
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 46 def -(other) if other.respond_to?(:to_zoned_date_time) java.time.Duration.between(other.to_zoned_date_time, self) elsif other.is_a?(Numeric) minus(other.seconds) elsif other.is_a?(QuantityType) minus(other.to_temporal_amount) else minus(other) end end |
#<=>(other) ⇒ Integer?
228 229 230 231 232 233 234 235 236 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 228 def <=>(other) # compare instants, otherwise it will differ by timezone, which we don't want # (use eql? if you care about that) if other.respond_to?(:to_zoned_date_time) to_instant.compare_to(other.to_zoned_date_time(self).to_instant) elsif other.respond_to?(:coerce) && (lhs, rhs = other.coerce(self)) lhs <=> rhs end end |
#coerce(other) ⇒ Array?
Converts other
to OpenHAB::CoreExt::Java::ZonedDateTime, if possible
258 259 260 261 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 258 def coerce(other) logger.trace { "Coercing #{self} as a request from #{other.class}" } [other.to_zoned_date_time(self), self] if other.respond_to?(:to_zoned_date_time) end |
#days_until(holiday, holiday_file = nil) ⇒ Integer
Calculate the number of days until a specific holiday
217 218 219 220 221 222 223 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 217 def days_until(holiday, holiday_file = nil) holiday = holiday.to_s.upcase r = ::Ephemeris.get_days_until(*[self, holiday, holiday_file || DSL.holiday_file].compact) raise ArgumentError, "#{holiday.inspect} isn't a recognized holiday" if r == -1 r end |
#holiday(holiday_file = nil) ⇒ Symbol?
Name of the holiday for this date.
157 158 159 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 157 def holiday(holiday_file = nil) ::Ephemeris.get_bank_holiday_name(*[self, holiday_file || DSL.holiday_file].compact)&.downcase&.to_sym end |
#holiday?(holiday_file = nil) ⇒ true, false
Determines if this date is on a holiday.
167 168 169 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 167 def holiday?(holiday_file = nil) ::Ephemeris.bank_holiday?(*[self, holiday_file || DSL.holiday_file].compact) end |
#in_dayset?(set) ⇒ true, false
Determines if this time is during a specific dayset
202 203 204 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 202 def in_dayset?(set) ::Ephemeris.in_dayset?(set.to_s, self) end |
#next_holiday(holiday_file = nil) ⇒ Symbol
Name of the closest holiday on or after this date.
177 178 179 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 177 def next_holiday(holiday_file = nil) ::Ephemeris.get_next_bank_holiday(*[self, holiday_file || DSL.holiday_file].compact).downcase.to_sym end |
#to_date ⇒ Date
88 89 90 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 88 def to_date Date.new(year, month_value, day_of_month) end |
#to_f ⇒ Float
The number of seconds since the Unix epoch.
85 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 85 delegate %i[to_i to_f] => :to_instant |
#to_i ⇒ Integer
The number of seconds since the Unix epoch.
|
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 71
|
#to_instant ⇒ Instant
Converts this object to an Instant
242 243 244 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 242 def to_instant(_context = nil) raw_to_instant end |
#to_local_date(_context = nil) ⇒ LocalDate
93 94 95 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 93 def to_local_date(_context = nil) toLocalDate end |
#to_local_time(_context = nil) ⇒ LocalTime
35 36 37 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 35 def to_local_time(_context = nil) toLocalTime end |
#to_month ⇒ Month
40 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 40 alias_method :to_month, :month |
#to_month_day ⇒ MonthDay
98 99 100 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 98 def to_month_day MonthDay.of(month, day_of_month) end |
#to_zoned_date_time(context = nil) ⇒ self
111 112 113 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 111 def to_zoned_date_time(context = nil) # rubocop:disable Lint/UnusedMethodArgument self 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.
132 133 134 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 132 def today? with_zone_same_instant(ZoneId.system_default).to_local_date == LocalDate.now end |
#tomorrow? ⇒ true, false
Returns true if the date, converted to the system time zone, is tomorrow.
141 142 143 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 141 def tomorrow? with_zone_same_instant(ZoneId.system_default).to_local_date == LocalDate.now + 1 end |
#weekend? ⇒ true, false
Determines if this time is during a weekend.
189 190 191 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 189 def weekend? ::Ephemeris.weekend?(self) end |
#yesterday? ⇒ true, false
Returns true if the date, converted to the system time zone, is yesterday.
120 121 122 |
# File 'lib/openhab/core_ext/java/zoned_date_time.rb', line 120 def yesterday? with_zone_same_instant(ZoneId.system_default).to_local_date == LocalDate.now - 1 end |