2010-06-15 16 views
26

Je n'arrive pas à trouver ça et j'ai l'impression que ça devrait être facile. Dans Ruby on Rails, comment dois-je prendre:Transformer Datetime en mois, jour et année?

2010-06-14 19:01:00 UTC 

et la transformer en

June 14th, 2010 

Puis-je pas simplement utiliser une aide dans la vue?

+2

http://stackoverflow.com/questions/165170/in-ruby- on-rails-comment-faire-je-format-a-date-avec-le-suffixe-comme-dans-soleil-oct-5t – Anurag

Répondre

49

Je ne sais pas pour

June 14th, 2010 

Mais si vous voulez

June 14, 2010 

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

Il suffit de faire

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

Et pour suffixe u se suivant

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

Parfait, merci. – bgadoci

+0

Ou si vous voulez une autre date, il suffit de le convertir au format date en premier. – paullb

+0

C'est génial. Et vient de me révéler les fonctions strftime et chaque option infinie. – gotqn

0

L'autre jour, il y avait une question similaire. Dans ma réponse how do I get name of the month in ruby on Rails? j'ai montré comment vous pouvez ajouter une définition personnalisée to_s dans votre fichier config/environment.rb.

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

Maintenant, vous pouvez appeler Time.now.to_s(:my_own_long_date_format) de toute vue d'obtenir:

June 15, 2010 
2

a besoin du module de temps pour Time.parse et ActiveSupport pour 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

Vous n'avez pas besoin de sauver dans une variable.

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

formats de date et dans les rails:

Date de

====

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 

temps

====

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 

par exemple:

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

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

Questions connexes