date-formatter - date formatter by example; auto-builds the strftime format string from an example date

Usage

The date by example lets you format dates e.g. "January 02, 2006" using an example as a format string e.g "January 02, 2006" instead of the classic strftime format specifier e.g. "%B %d, %Y". The date by example adds:

  • String#to_strfime
  • Date#format
  • Time#format
  • DateTime#format
  • NilClass#format

to the built-in classes.

The String#to_strftime Method

class String
  def to_strftime() DateByExample.to_strftime( self ); end
end

The new String#to_strftime method auto-builds the strftime format string from an example date:

require 'date/formatter'

p 'January 02, 2006'.to_strftime          #=> "%B %d, %Y"
p 'Mon, Jan 02'.to_strftime               #=> "%a, %b %d"
p '2 Jan 2006'.to_strftime                #=> "%-d %b %Y"
p 'Monday, January 2, 2006'.to_strftime   #=> "%A, %B %-d, %Y"

p 'Mon, Jan 02 3:00'.to_strftime          #=> "%a, %b %d %-H:%M"
p '2 Mon 2006 03:00'.to_strftime          #=> "%-d %b %Y %H:%M"

The Date#format Method

class Date
  def format( spec ) self.strftime( spec.to_strftime ); end
end

The new Date#format method formats the date like the passed in example:

date = Date.today   ## test run on 2020-02-09

p date.format( 'January 02, 2006' )         #=> "February 09, 2020"
p date.format( 'Mon, Jan 02' )              #=> "Sun, Feb 09"
p date.format( '2 Jan 2006' )               #=> "9 Feb 2020"
p date.format( 'Monday, January 2, 2006' )  #=> "Sunday, February 9, 2020"

The Time#format Method

class Time
  def format( spec ) self.strftime( spec.to_strftime ); end
end

The new Time#format method formats the time like the passed in example:

time = Time.now     ## test run on 2020-02-09 00:00

p time.format( 'January 02, 2006' )         #=> "February 09, 2020"
p time.format( 'Mon, Jan 02' )              #=> "Sun, Feb 09"
p time.format( '2 Jan 2006' )               #=> "9 Feb 2020"
p time.format( 'Monday, January 2, 2006' )  #=> "Sunday, February 9, 2020"

p time.format( 'Mon, Jan 02 3:00' )         #=> "Sun, Feb 09 0:00"
p time.format( '2 Mon 2006 03:00' )         #=> "9 Sun 2020 00:00"

The NilClass#format Method

class NilClass
  def format( spec ) ''; end
end

For convenience the new NilClass#format will catch format calls on nil
and NOT crash but return an empty string following the NilClass#to_s example:

p nil.format( 'January 02, 2006' )         #=> ""
p nil.to_s                                 #=> ""

License

The date-formatter scripts are dedicated to the public domain. Use it as you please with no restrictions whatsoever.

Questions? Comments?

Send them along to the wwwmake Forum/Mailing List. Thanks!