Module: Lazier::DateTime::ClassMethods
- Defined in:
- lib/lazier/datetime.rb
Overview
General methods.
Instance Method Summary (collapse)
-
- (String) custom_format(key)
Lookups a custom datetime format.
-
- (Array) days(short = true)
Returns strings representations of days.
-
- (Date) easter(year = nil)
Returns the Easter (according to Gregorian calendar) date for the year.
-
- (TimeZone) find_timezone(name = true, dst_label = nil)
Find a zone by its name.
-
- (Boolean) is_valid?(value, format = "%F %T")
Checks if the date is valid against to a specific format.
-
- (Array) list_timezones(with_dst = true, dst_label = nil)
Returns a list of names of all timezones.
-
- (Array) months(short = true)
Returns strings representations of months.
-
- (String) parameterize_zone(tz, with_offset = true)
Returns a string representation of a timezone.
-
- (Rational) rationalize_offset(offset)
Returns an offset in rational value.
-
- (Array) timezones
Returns all the availabe timezones.
-
- (String|TimeZone) unparameterize_zone(tz, as_string = false, dst_label = nil)
Finds a parameterized timezone.
-
- (Array) years(offset = 10, also_future = true, reference = nil, as_objects = false)
Returns a range of years.
Instance Method Details
- (String) custom_format(key)
Lookups a custom datetime format.
142 143 144 |
# File 'lib/lazier/datetime.rb', line 142 def custom_format(key) ::Lazier.settings.date_formats.fetch(key.to_sym, key).ensure_string end |
- (Array) days(short = true)
Returns strings representations of days.
19 20 21 22 23 24 25 |
# File 'lib/lazier/datetime.rb', line 19 def days(short = true) days = ::Lazier.settings.date_names[short ? :short_days : :long_days] (1..7).to_a.collect { |i| {value: i.to_s, label: days[i - 1]} } end |
- (Date) easter(year = nil)
Returns the Easter (according to Gregorian calendar) date for the year.
124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/lazier/datetime.rb', line 124 def easter(year = nil) year = ::Date.today.year if !year.is_integer? # Compute using Anonymouse Gregorian Algorithm: http://en.wikipedia.org/wiki/Computus#Anonymous_Gregorian_algorithm data = easter_start(year) data = easter_part_1(data) data = easter_part_2(year, data) data = easter_part_3(year, data) day, month = easter_end(data) ::Date.civil(year, month, day) end |
- (TimeZone) find_timezone(name = true, dst_label = nil)
Find a zone by its name.
83 84 85 |
# File 'lib/lazier/datetime.rb', line 83 def find_timezone(name = true, dst_label = nil) ::ActiveSupport::TimeZone.find(name, dst_label) end |
- (Boolean) is_valid?(value, format = "%F %T")
Checks if the date is valid against to a specific format.
152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/lazier/datetime.rb', line 152 def is_valid?(value, format = "%F %T") rv = true format = self.custom_format(format) begin ::DateTime.strptime(value.ensure_string, format) rescue => e rv = false end rv end |
- (Array) list_timezones(with_dst = true, dst_label = nil)
Returns a list of names of all timezones.
74 75 76 |
# File 'lib/lazier/datetime.rb', line 74 def list_timezones(with_dst = true, dst_label = nil) ::ActiveSupport::TimeZone.list_all(with_dst, dst_label) end |
- (Array) months(short = true)
Returns strings representations of months.
32 33 34 35 36 37 |
# File 'lib/lazier/datetime.rb', line 32 def months(short = true) months = ::Lazier.settings.date_names[short ? :short_months : :long_months] (1..12).collect { |i| {value: i.to_s.rjust(2, "0"), label: months.at(i - 1)} } end |
- (String) parameterize_zone(tz, with_offset = true)
Returns a string representation of a timezone.
DateTime.parameterize_zone(ActiveSupport::TimeZone["Pacific Time (US & Canada)"])
# => "-0800@pacific-time-us-canada"
96 97 98 |
# File 'lib/lazier/datetime.rb', line 96 def parameterize_zone(tz, with_offset = true) ::ActiveSupport::TimeZone::parameterize_zone(tz, with_offset) end |
- (Rational) rationalize_offset(offset)
Returns an offset in rational value.
115 116 117 |
# File 'lib/lazier/datetime.rb', line 115 def rationalize_offset(offset) ::ActiveSupport::TimeZone.rationalize_offset(offset) end |
- (Array) timezones
Returns all the availabe timezones.
65 66 67 |
# File 'lib/lazier/datetime.rb', line 65 def timezones ::ActiveSupport::TimeZone.all end |
- (String|TimeZone) unparameterize_zone(tz, as_string = false, dst_label = nil)
Finds a parameterized timezone.
107 108 109 |
# File 'lib/lazier/datetime.rb', line 107 def unparameterize_zone(tz, as_string = false, dst_label = nil) ::ActiveSupport::TimeZone::unparameterize_zone(tz, as_string, dst_label) end |
- (Array) years(offset = 10, also_future = true, reference = nil, as_objects = false)
Returns a range of years.
Date.years(3, false, 2010)
# => [2007, 2008, 2009, 2010]
Date.years(1, true, 2010, true)
# => [{:value=>2009, :label=>2009}, {:value=>2010, :label=>2010}, {:value=>2011, :label=>2011}]
57 58 59 60 |
# File 'lib/lazier/datetime.rb', line 57 def years(offset = 10, also_future = true, reference = nil, as_objects = false) y = reference || ::Date.today.year (y - offset..(also_future ? y + offset : y)).collect { |year| as_objects ? {value: year, label: year} : year } end |