2010-06-15 22 views
26

Ich kann das anscheinend nicht finden und ich finde es sollte einfach sein. In Ruby on Rails, wie erstelle ich:Datum in Monat, Tag und Jahr umwandeln?

2010-06-14 19:01:00 UTC 

und es in

June 14th, 2010 

Kann ich nicht nur einen Helfer in der Ansicht verwenden?

+2

http://stackoverflow.com/questions/165170/in-ruby- on-rails-how-do-i-Format-ein-Datum-mit-dem-Suffix-wie-in-sun-oct-5t – Anurag

Antwort

49

Ich weiß nicht, für

June 14th, 2010 

Aber wenn Sie wollen

June 14, 2010 

Ref how do i get name of the month in ruby on Rails? oder this

Just do

@date = Time.now 
@date.strftime("%B %d, %Y") 

Und für Suffix u se folgende

@date.strftime("%B #{@date.day.ordinalize}, %Y") # >>> Gives `June 18th, 2010` 
+0

Perfekt, danke. – bgadoci

+0

Oder, wenn Sie ein anderes Datum möchten, konvertieren Sie es zuerst in das Datumsformat. – paullb

+0

Das ist brilliant. Und mir nur die strftime Funktionen und die endlosen Optionen gezeigt. – gotqn

0

Erst neulich eine ähnliche Frage. In meiner Antwort how do I get name of the month in ruby on Rails? habe ich gezeigt, wie Sie eine benutzerdefinierte to_s Definition in Ihrer config/environment.rb Datei hinzufügen können.

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
:my_own_long_date_format => "%B %d, %Y") 

Jetzt können Sie Time.now.to_s(:my_own_long_date_format) aus jeder Ansicht aufrufen zu bekommen:

June 15, 2010 
2

braucht das Zeit-Modul für Time.parse und Active für Integer#ordinalize:

require 'time' 
require 'active_support' 

input = '2010-06-14 19:01:00 UTC' 
t = Time.parse(input) 
date = "%s %s, %d" % [t.strftime("%B"), t.day.ordinalize, t.year] 
# => "June 14th, 2010" 
3

Sie brauchen nicht zu retten es in einer Variablen.

Time.now.strftime("%Y-%m-%d") # 2013-01-08 
4

Zeit- und Datumsformate in Schienen:

Datum

====

db:‘%Y-%m-%d’ 2008-08-20 

long_ordinal:‘&proc’  August 20th, 2008 

long:‘%B %e, %Y’ August 20, 2008 

rfc822:‘%e %b %Y’ 20 Aug 2008 

number:‘%Y%m%d’  20080820 

short:‘%e %b’  20 Aug 

Datetime

====

db:‘%Y-%m-%d’ 2008-08-20 16:56:21 

long_ordinal:‘&proc’  August 20th, 2008 16:56 

long:‘%B %e, %Y’ August 20, 2008 16:56 

rfc822:‘%e %b %Y’ Wed, 20 Aug 2008 16:56:21 -0600 

number:‘%Y%m%d’  20080820165621 

short:‘%e %b’  20 Aug 16:56 

Zeit

====

db:‘%Y-%m-%d %H:%M:%S’   2008-08-20 16:56:21 

long_ordinal:‘&proc’   August 20th, 2008 16:56 

long:‘%B %d, %Y %H:%M’   August 20, 2008 16:56 

rfc822:‘%a, %d %b %Y %H:%M:%S %z’ Wed, 20 Aug 2008 16:56:21 -0600 

short:‘%d %b %H:%M’    20 Aug 16:56 

number:‘%Y%m%d%H%M%S’    20080820165621 

time:‘%H:%M’      16:56 

zum Beispiel:

<%= news.created_at.strftime("%B %d, %Y %H:%M") %> 

Dank http://onrails.org/2008/08/20/what-are-all-the-rails-date-formats.html

Verwandte Themen