Adding your own datetime formats to Rails

An aspect of Rails that I adore is how it has a place for nearly everything you need to do. One of those things is to format dates/times using the `strftime` method. Instead of tucking away custom `strftime` patterns in constants, you can configure them onto the native Rails formatter, accessed via `time.to_s(:format_name)`

DateTime formats are shared with Time and stored in the `Time::DATE_FORMATS` hash. Use your desired format name as the hash key and either a `strftime` string or Proc instance that takes a time or datetime argument as the value.

```ruby
# config/initializers/time_formats.rb
Time::DATE_FORMATS[:month_and_year] = '%B %Y'
Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") }
```

Here's one of the formats that I've been using lately, to get my times into a more familiar form.

```ruby
Time::DATE_FORMATS[:short_time] =
   lambda { |time| time.strftime('%I:%M%p').gsub('AM','am').gsub('PM','pm').gsub(':00','') }
```

obie-fernandez
January 20, 2017
