Module: Lazier::DateTime
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/lazier/datetime.rb
Overview
Extensions for date and time objects.
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary (collapse)
-
- (Fixnum) in_months(base = nil)
Returns the number of months passed between the beginning of the base year and the current date.
-
- (String) local_lstrftime(format = nil)
Formats a datetime in the current timezone, looking up also custom formats.
-
- (String) local_strftime(format = nil)
Formats a datetime in the current timezone.
-
- (String) lstrftime(format = nil)
Formats a datetime, looking up also custom formats.
-
- (String) padded_month
Returns the current month number with leading 0.
-
- (UTC::Time) utc_time
Returns the UTC::Time representation of the current datetime.
Instance Method Details
- (Fixnum) in_months(base = nil)
Returns the number of months passed between the beginning of the base year and the current date.
DateTime.civil(2013, 6, 1).in_months(2011)
# => 18
193 194 195 196 |
# File 'lib/lazier/datetime.rb', line 193 def in_months(base = nil) base ||= ::Date.today.year ((self.year) - base) * 12 + self.month end |
- (String) local_lstrftime(format = nil)
Formats a datetime in the current timezone, looking up also custom formats.
254 255 256 |
# File 'lib/lazier/datetime.rb', line 254 def local_lstrftime(format = nil) (self.respond_to?(:in_time_zone) ? self.in_time_zone : self).lstrftime(format) end |
- (String) local_strftime(format = nil)
Formats a datetime in the current timezone.
245 246 247 |
# File 'lib/lazier/datetime.rb', line 245 def local_strftime(format = nil) (self.respond_to?(:in_time_zone) ? self.in_time_zone : self).strftime(::DateTime.custom_format(format)) end |
- (String) lstrftime(format = nil)
Formats a datetime, looking up also custom formats.
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 |
# File 'lib/lazier/datetime.rb', line 210 def lstrftime(format = nil) rv = nil names = ::Lazier.settings.date_names final_format = ::DateTime.custom_format(format).ensure_string.gsub(/(%{1,2}:?[abz])/i) do |match| mrv = match # Handling of %z is to fix ruby 1.8 bug in OSX: http://bugs.ruby-lang.org/issues/2396 if match !~ /^%%/ then case match when "%a" mrv = names[:short_days][self.wday] when "%A" mrv = names[:long_days][self.wday] when "%b" mrv = names[:short_months][self.month - 1] when "%B" mrv = names[:long_months][self.month - 1] when "%z" mrv = ::Lazier.is_ruby_18? ? self.formatted_offset(false) : nil when "%:z" mrv = ::Lazier.is_ruby_18? ? self.formatted_offset(true) : nil end end mrv ? mrv.sub("%", "%%") : match end self.strftime(final_format) end |
- (String) padded_month
Returns the current month number with leading 0.
201 202 203 |
# File 'lib/lazier/datetime.rb', line 201 def padded_month self.month.to_s.rjust(2, "0") end |
- (UTC::Time) utc_time
Returns the UTC::Time representation of the current datetime.
179 180 181 182 |
# File 'lib/lazier/datetime.rb', line 179 def utc_time ua = (self.respond_to?(:utc) ? self : self.to_datetime).utc ::Time.utc(ua.year, ua.month, ua.day, ua.hour, ua.min, ua.sec) end |