Je crée une nouvelle application Rails 3, et j'utilise DateTime
pour quelques champs, mais chaque norme de champ datetime a UTC derrière (dans une vue) , comme:
2010-10-10 16:19:00 UTC
Comment puis-je me débarrasser de la partie UTC?
MISE À JOUR: voici ce que j'ai jusqu'à présent:
<%= trip.truckleft.strftime("%Y-%m-%d %H:%M") %>
Donc, tout ce que j'ai à faire maintenant est de mettre cela dans une aide, mais n'y a-t-il pas une meilleure façon plus universelle?
J'ai regardé d'autres articles, qui suggéraient de créer un time_formats.rb
dans les initialiseurs, mais je n'ai pas réussi à le faire.
Merci pour votre aide, très appréciée!
Une autre façon - peut-être maintenant préférée - est d'utiliser prise en charge de l'internationalisation et de la localisation de Rails . Il y a beaucoup à apprendre dans ce guide, donc la version tl; dr est la suivante:
<%= l trip.truckleft, :format => :long %>
Il existe quelques formats de date et d'heure prédéfinis comme :long
déjà disponible pour l'anglais, et vous pouvez ajouter le vôtre dans config/locales/en.yml
en suivant la structure YAML dans ces exemples. Si vous ne vous lancez pas encore dans l'ensemble de l'i18n/l10n et que vous regardez la méthode l
tout le temps est déroutant, vous pouvez également utiliser:
<%= trip.truckleft.to_formatted_s(:long) %>
Voici ce qui a finalement fonctionné pour moi:
J'ai créé un nouveau fichier dans:
config/initializers/
nommé: time_formats.rb
et l'a ajouté à ce fichier:
Time::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"
Ensuite, j'ai enregistré, redémarré le serveur et cela a commencé à fonctionner.
J'utilise i18n pour formater mes dates et les avoir dans en.yml:
date:
formats:
default: "%m/%d/%Y"
Je voulais réutiliser ce format pour la façon dont les modèles affichent leurs dates, donc ma config/initializers/time_formats.rb contient ceci:
Date::DATE_FORMATS[:default] = lambda { |date| I18n.l(date) }
Pour être exact, vous devez les mettre dans vos initialiseurs:
Date::DATE_FORMATS[:default] = "%m-%d-%Y"
Time::DATE_FORMATS[:default] = "%m-%d-%Y %H:%M"
Lorsque vous avez datetime, le second fonctionnera (par exemple: created_at for dans les modèles).
ajouter à config/environment.rb
my_datetime_formats = { :default => '%F %T' } #or any other you like
my_date_formats = { :default => '%F' } #or any other you like
Time::DATE_FORMATS.merge!(my_datetime_formats)
Date::DATE_FORMATS.merge!(my_date_formats)
(la différence par rapport aux autres réponses - est merge!
méthode)
Vous pouvez mettre la ligne suivante à la fin de votre config/environment.rb
fichier:
Date::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"