47 votes

Rails 3 par défaut format datetime sans UTC

Je suis en création d'une nouvelle Rails 3 app, et en cela j'utilise DateTime pour un couple de champs, cependant chaque champ date / heure standard de l'est UTC derrière elle (en vue), comme:

2010-10-10 16:19:00 UTC

Comment puis-je me débarrasser de l'UTC partie?

Mise à JOUR: voici ce que j'ai à ce jour:

<%= trip.truckleft.strftime("%Y-%m-%d %H:%M") %>

Donc, tout ce que j'ai à faire maintenant est de mettre ça dans un helper, mais n'est-il pas une meilleure manière plus universelle?

J'ai regardé quelques autres postes, qui a suggéré la création d'un time_formats.rb dans les initialiseurs, cependant je n'ai pas de succès en faisant cela.

Merci pour votre aide, très apprécié!

65voto

ches Points 1314

Un autre -- c'est peut-être préféré -- façon est d'utiliser des Rails d'internationalisation et de localisation de soutien. Il y a beaucoup à apprendre dans ce guide, de sorte que le tl;dr version est ceci:

<%= l trip.truckleft, :format => :long %>

Il y a quelques prédéfinis formats de date et heure comme :long disponible à vous déjà pour l'anglais, et vous pouvez ajouter votre propre en config/locales/en.yml par suite de la YAML structure dans ces exemples. Si vous n'obtenez pas beaucoup dans l'ensemble de l'i18n/l10n chose pour l'instant et de regarder l' l méthode de tous les temps est source de confusion, vous pouvez également utiliser:

<%= trip.truckleft.to_formatted_s(:long) %>

42voto

Paintrick Points 792

Voici ce qui a fonctionné pour moi:

J'ai créé un nouveau fichier dans:

config/initializers/

nom: time_formats.rb

et ajoutée à ce fichier:

Time::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"

Ensuite, j'ai sauvé, redémarré le serveur et ça a fonctionné.

26voto

jankubr Points 331

Je suis avec i18n pour formater mes dates et ce dans fr.yml:

date:
  formats:
    default: "%m/%d/%Y"

J'ai voulu réutiliser le format de la façon dont les modèles montrent leurs dates, donc ma config/initializers/time_formats.rb contient ceci:

Date::DATE_FORMATS[:default] = lambda { |date| I18n.l(date) }

14voto

Łukasz Anwajler Points 101

Pour être exact, vous devriez mettre dans votre initialiseurs:

Date::DATE_FORMATS[:default] = "%m-%d-%Y"
Time::DATE_FORMATS[:default] = "%m-%d-%Y %H:%M"

Lorsque datetime, le second volonté de travail (par exemple: created_at dans les modèles).

1voto

Daniel Points 7197

Vous pouvez mettre la ligne suivante à la fin de votre config/environment.rb le fichier:

Date::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"

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