20 votes

Comment formater une date dans rails ?

Dans ma vue Rails, j'ai le code ci-dessous qui affiche une date.

<%= link_to timeslot.opening, [@place, timeslot] %> 

Le résultat de cette ligne est ci-dessous :

2013-02-02 01:00:00 UTC 

Comment puis-je modifier cela pour qu'il s'affiche comme suit :

2/2/13: X:00 PST

32voto

Charles Points 3434

Utilisez la fonction strftime() sur les dates/horaires :

<%= link_to timeslot.opening.strftime("%Y %m %d"), [@place, timeslot] %>

Jetez un coup d'œil à la documentation pour savoir comment fonctionne le formatage.

9voto

Luís Ramalho Points 3415

Vous devez utiliser un assistant pour cela.

Si vous souhaitez convertir des données UTC en données PST, vous pouvez utiliser la fonction in_time_zone méthode

def convert_time(datetime)
  time = Time.parse(datetime).in_time_zone("Pacific Time (US & Canada)")
  time.strftime("%-d/%-m/%y: %H:%M %Z")
end

<%= link_to convert_time(timeslot.opening), [@place, timeslot] %>

3voto

Ash Points 1060

Pour le format que vous avez demandé :

<%= link_to timeslot.opening.strftime(%d/%m/%y: %H:%M:%S %Z), [@place, timeslot] %>

D'autres options sont disponibles ici :

http://rorguide.blogspot.co.uk/2011/02/date-time-formats-in-ruby-on-rails.html

0voto

stevejpurves Points 195

Pour obtenir le formatage précis de la date que vous recherchez dans votre exemple, utilisez la chaîne de formatage strftime suivante "%-d/%-m/%y: %k:00 PST"

Veuillez préciser dans votre question (a) ce que vous voulez faire avec le champ de l'heure (par exemple, voulez-vous toujours afficher une heure ? X:00) et (b) voulez-vous toujours indiquer les heures PST ou voulez-vous imprimer le fuseau horaire réel, ou voulez-vous convertir en PST ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X