Sha256: 51e6eea655f8d0955a5265bc21617b389ac4d2351969ea16d463f000a5586f44

Contents?: true

Size: 1.36 KB

Versions: 11

Compression:

Stored size: 1.36 KB

Contents

require 'date'

module AdminData
  class DateUtil

    # returns a time object for the given input.
    # validation is not done. It is assumed that client
    # has done validation using .valid? method.
    def self.valid?(input)
      !!parse(input)
    end

    # Usage:
    #
    # parase('13-feb-2008')     # => time object
    # parse('13-February-2008') # => time object
    # parse('13-February-2008') # => time object
    # parse('99-Feb-2008')      #=> false
    #
    def self.parse(input)
      return false if input.blank?

      input.strip!

      # remove all the white space characters
      input.gsub!(/\s/,'')

      return false if input.length < 9

      dd,mm,yyyy = input.split('-')
      return false if dd.nil? || mm.nil? || yyyy.nil?

      # month must be of atleast three characters
      return false if mm.length < 3

      mm = mm.downcase[0,3]

      months = {'jan' => 1, 'feb' => 2, 'mar' => 3, 'apr' => 4, 'may' => 5, 'jun' => 6,
                'jul' => 7, 'aug' => 8, 'sep' => 9, 'oct' => 10, 'nov' => 11, 'dec' => 12 }

      return false unless months.keys.include? mm

      mm = months[mm].to_i
      yyyy = yyyy.to_i
      dd = dd.to_i

      # validate date values
      begin
        Date.new(yyyy,mm,dd)
      rescue
        return false
      end

      Time.now.change(:year => yyyy, :month => mm, :day => dd, :hour => 0)
    end

  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
the_jobbook_admin_data-1.3.0a lib/admin_data/date_util.rb
admin_data-1.2.1 lib/admin_data/date_util.rb
admin_data-1.2.0 lib/admin_data/date_util.rb
admin_data-1.1.16 lib/admin_data/date_util.rb
admin_data-1.1.15 lib/admin_data/date_util.rb
admin_data-1.1.14 lib/admin_data/date_util.rb
admin_data-1.1.13 lib/admin_data/date_util.rb
admin_data-1.1.12 lib/admin_data/date_util.rb
admin_data-1.1.11 lib/admin_data/date_util.rb
admin_data-1.1.10 lib/admin_data/date_util.rb
admin_data-1.1.9 lib/admin_data/date_util.rb