Sha256: 4e15e4e49f4e694c4c451efe194069408353ee52c60cf49bb45c8b5d0f565cd1

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

require 'time'

module Lantus
# Author::  Sam (mailto:sam@cruft.co)
# License:: MIT
  # OnTrack uses really shitty date formats, including embedding a comma in
  # the CSV export file. Christ on a crutch
  class AwesomeDate < Hash

    # Parse the string 'd', looking for datetime information
    def initialize d
      t = Time.parse d

      # We extract loads of stuff. Might be useful one day
      self["timestamp"] = t
      self["tzoffset"] = t.strftime "%z"
      self["timezone"] = t.zone
      self["unixtime"] = t.to_i
      self["day"] = t.strftime("%A").downcase
      self["cardinal_day"] = t.strftime("%-d").to_i
      self["ordinal_day"] = "%d%s" % [
        self["cardinal_day"],
        self.ordinal(self["cardinal_day"])
      ]
      self["month"] = t.strftime("%B").downcase
      self["date"] = t.strftime "%F"
      self["time"] = t.strftime "%T #{self['timezone']}" 
      self["short_time"] = t.strftime "%H:%M"
      self["nice_date"] = "%s %s %s" % [
        self["day"],
        self["month"],
        self["ordinal_day"]
      ]
    end

    def ordinal cardinal
      last_digit = cardinal % 10
      case last_digit
        when 1
          "st"
        when 2
          "nd"
        when 3
          "rd"
        else
          "th"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lantus-0.0.1 lib/lantus/awesome_date.rb