web-dev-qa-db-fra.com

Changer le format de created_at dans Rails 3.1?

J'appelle la date à laquelle un enregistrement a été créé dans une application de base exécutant Rails 3.1.

<%= @issue.created_at %>

Ce qui précède génère l'horodatage suivant:

2011-09-10 14:44:24 UTC

Quel est le moyen le plus simple de modifier l’affichage? Je voudrais quelque chose comme ça:

10 Sept. 2011

et puis en quelque sorte l'appeler à nouveau avec un format différent:

14:44

je peux donc l'appeler deux fois et fusionner les deux:

10 Sept. 2011
14:44

Si je veux l'appeler deux fois plutôt que de créer un assistant pour formater une date/heure sur deux lignes, c'est pour me permettre d'appeler la date à certains endroits et uniquement l'heure à d'autres.

25
dannymcc

Je voudrais utiliser I18n. Jetez un oeil à quelques exemples http://guides.rubyonrails.org/i18n.html#adding-date-time-formats . C'est une manière propre et flexible de formater les dates et les heures.

13
lucapette

La chose la plus simple à faire est d'utiliser la fonction strftime

# Day / Month / Year
@issue.created_at.strftime("%d %b. %Y")
# Hour:Min
@issue.created_at.strftime("%H:%M")

Vous pouvez placer ces deux appels dans des assistants distincts si vous vous trouvez souvent en train de le faire.

76
spike
<%= l(@issue.created_at, :format=>:your_format) %>

dans les paramètres régionaux YAML (app/config/locale/country_id.yml), vous devez déclarer

time:
 formats:
  your_format: '%d %b. %Y'
  your_another_format: '%I:%M'

Le formatage de la date doit être déclaré dans votre fichier de définition i18n YAML pour une configuration facile, et un autre format de date peut être trouvé ici

9
Agung Prasetyo

Consultez http://www.foragoodstrftime.com/ pour personnaliser facilement le formatage date/heure @spike

7
akeyva

Tu peux faire:

@issue.created_at.to_date.iso8601

1
flyer88

to_s prend également un argument de formatage:

http://apidock.com/Rails/ActiveSupport/TimeWithZone/to_s

0
Daniel Korenblum