19-06-2010, 06:25 PM
Ceci n'est que la chaîne retournée par la méthode to_s des instances de la classe Datetime. Cette méthode est appelé implicitement sur les objets que tu tentes d'afficher (comme toString dans la plupart des langages object).
Pour formatter une date, tu peux utiliser la méthode strftime (string from time, qui existe aussi en PHP sous forme d'une fonction).
L'autre solution, meilleure, est d'utiliser le module d'internationalisation de Rails, excellent. En gros, tu écris :
Et tu peux même définir plusieurs format. Tout est expliqué clairement dans le guide Rails Internationalization (I18n) API. En plus, Sven Fuchs a répertorié contenant les formats pour plein de langues, dont le français !
Voici un petit extrait :
Mais il y a également des réglages pour écrire des choses comme "Il y a environ 12 minutes".
En plus, Rails s'occupe de tout pour toi à stocker des dates en UTC (et les converti selon le timezone configuré par l'application). Il est tout bonnement génial à ce niveau. Il permet d'écrire des trucs comme :
C'est tout de même bien plus sympa que de travailler avec des timestamp Unix.
Sephi-Chan
Pour formatter une date, tu peux utiliser la méthode strftime (string from time, qui existe aussi en PHP sous forme d'une fonction).
puts Time.now.strftime("%d/%m/%Y a %Hh%M") # "19/06/2010 a 18h10"
L'autre solution, meilleure, est d'utiliser le module d'internationalisation de Rails, excellent. En gros, tu écris :
I18n.localize(Time.now)
l(Time.now) # Dans les vues, le helper l() fait appel à I18n.localize, ça permet d'être plus concis.
Et tu peux même définir plusieurs format. Tout est expliqué clairement dans le guide Rails Internationalization (I18n) API. En plus, Sven Fuchs a répertorié contenant les formats pour plein de langues, dont le français !
Voici un petit extrait :
fr:
date:
formats:
default: "%d/%m/%Y"
short: "%e %b"
long: "%e %B %Y"
long_ordinal: "%e %B %Y"
only_day: "%e"
day_names: [dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi]
abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam]
month_names: [~, janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre]
abbr_month_names: [~, jan., fév., mar., avr., mai, juin, juil., août, sept., oct., nov., déc.]
order: [ :day, :month, :year ]
time:
formats:
default: "%d %B %Y %H:%M"
time: "%H:%M"
short: "%d %b %H:%M"
long: "%A %d %B %Y %H:%M:%S %Z"
long_ordinal: "%A %d %B %Y %H:%M:%S %Z"
only_second: "%S"
am: 'am'
pm: 'pm'
Mais il y a également des réglages pour écrire des choses comme "Il y a environ 12 minutes".
En plus, Rails s'occupe de tout pour toi à stocker des dates en UTC (et les converti selon le timezone configuré par l'application). Il est tout bonnement génial à ce niveau. Il permet d'écrire des trucs comme :
# Récupère les messages écrit il y a 10 jours et plus.
@old_messages = Message.where("created_at < ?", 10.days.ago)
# On définit la date de mort du personnage a 80 ans et 2 semaines (à compter de cet instant).
@character.die_at = (80.years + 2.weeks).from_now
C'est tout de même bien plus sympa que de travailler avec des timestamp Unix.
Sephi-Chan