# Changing default date format in Rails

**URL:** <https://www.ruby-forum.com/t/changing-default-date-format-in-rails/54779>\
**Category:** Rails\
**Created:** [March 14, 2006, 5:02am UTC](https://www.ruby-forum.com/t/changing-default-date-format-in-rails/54779 "2006-03-14T05:02:10Z")\
**Posts on this page:** 3\
**Page:** 2

<div class="post-metadata">

**Author:** ![Dav\_Y](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f1d935/32.png) [@Dav\_Y](https://www.ruby-forum.com/u/Dav_Y)\
**Post date:** [February 24, 2011, 7:19pm UTC](https://www.ruby-forum.com/t/changing-default-date-format-in-rails/54779/21 "2011-02-24T19:19:47Z")

</div>

When i use,

Date::DATE\_FORMATS[:default] = “%m/%d/%Y”

in environment.rb file or any .rb file in config/initializers, works  
fine Rails 3.0.1, but the same doesn’t work with Rails 3.0.4.

Please let me know if there is some other way to define default date  
formats at application level or if you need any other information.

Thanks  
Chaitanya

Sean Corbett wrote in post #913239:

> In Rails3 you can run:
> 
> Date::DATE\_FORMATS[:default] = “%m/%d/%Y”
> 
> skipping the ActiveSupport::CoreExtensions::…
> 
> see your installation of active support, eg:
> 
> activesupport-3.0.0.beta3/lib/active\_support/core\_ext/conversions.rb for  
> more info.

---

<div class="post-metadata">

**Author:** ![Dav\_Y](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f1d935/32.png) [@Dav\_Y](https://www.ruby-forum.com/u/Dav_Y)\
**Post date:** [August 16, 2011, 10:45am UTC](https://www.ruby-forum.com/t/changing-default-date-format-in-rails/54779/22 "2011-08-16T10:45:30Z")

</div>

And what about helpers?  
I would like to let users to enter date in the text field (faster then  
3x select), so value for some\_object.date\_attribute  
should in f.text\_field(:date\_attribute)  
be “21.7.2011” (not “2011-07-21”).

I am using virtual atributes for now:

def date\_attribut\_to\_s  
if self.date\_attribute.kind\_of?(Date)  
return self.date\_attribute.strftime("%d.%m.%Y")  
else  
return self.date\_attribute  
end  
end

def date\_attribut\_to\_s=(maybe\_date)  
date=nil

```
if maybe_date.blank?
  self.date_attribute=nil
elsif mybe_date.kind_of?(Date)
  self.date_attribute=maybe_date
else
  begin
    #some more complex date parsing required?
    date = Date.strptime(maybe_date, "%d.%m.%Y")
  rescue
    self.errors.add(:date_attribute,"Invalid date")
  end
  self.date_attribute = date unless date.blank?

```

end  
end

and use it in view as f.text\_field(:date\_attribute\_to\_s) .

Foton

Valentine B. wrote in post #989611:

> Use Rails I18n for this.
> 
> In config/locales/en.yml:
> 
> en:  
> date:  
> formats:  
> default: “%m/%d/%Y”
> 
> In views:
> 
> \<%= l some\_model.date\_field %\>

---

<div class="post-metadata">

**Author:** ![Dav\_Y](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f1d935/32.png) [@Dav\_Y](https://www.ruby-forum.com/u/Dav_Y)\
**Post date:** [August 16, 2011, 10:52am UTC](https://www.ruby-forum.com/t/changing-default-date-format-in-rails/54779/23 "2011-08-16T10:52:53Z")

</div>

On 16 August 2011 09:45, Petr M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> return self.date\_attribute.strftime(“%d.%m.%Y”)  
> elsif mybe\_date.kind\_of?(Date)  
> end
> 
> and use it in view as f.text\_field(:date\_attribute\_to\_s) .

So what is the question?

Colin

[Previous page](https://www.ruby-forum.com/t/changing-default-date-format-in-rails/54779.md?page=1)
