Je souhaite afficher les dates au format: jour de la semaine court, mois court, jour du mois sans zéro non significatif mais avec le suffixe "th", "st", "nd" ou "rd".
Par exemple, le jour où cette question a été posée afficherait "Thu Oct 2nd".
J'utilise Ruby 1.8.7 et Time.strftime ne semble tout simplement pas faire cela. Je préférerais une bibliothèque standard s'il en existe une.
ruby-on-rails
ruby
date
Jonathan Tran
la source
la source
Réponses:
Utilisez la méthode ordinalize de 'active_support'.
Remarque, si vous utilisez IRB avec Ruby 2.0, vous devez d'abord exécuter:
la source
Vous pouvez utiliser la méthode d'assistance ordinalize d'active_support sur les nombres.
la source
En poussant un peu plus loin la réponse de Patrick McKenzie, vous pouvez créer un nouveau fichier dans votre
config/initializers
répertoire appelédate_format.rb
(ou ce que vous voulez) et y mettre ceci:Ensuite, dans votre code de vue, vous pouvez formater n'importe quelle date en lui attribuant simplement votre nouveau format de date:
C'est simple, ça marche et c'est facile à construire. Ajoutez simplement plus de lignes de format dans le fichier date_format.rb pour chacun de vos différents formats de date. Voici un exemple plus étoffé.
la source
Time::DATE_FORMATS.merge!(:my_date => lambda { |time| time.strftime("%a, %b #{ActiveSupport::Inflector.ordinalize(time.day)}") })
la source
J'aime la réponse de Bartosz, mais bon, puisque nous parlons de Rails, faisons un pas en avant. (Edit: Bien que j'allais simplement monkeypatch la méthode suivante, il s'avère qu'il existe un moyen plus propre.)
DateTime
les instances ont uneto_formatted_s
méthode fournie par ActiveSupport, qui prend un seul symbole comme paramètre et, si ce symbole est reconnu comme un format prédéfini valide, renvoie une chaîne avec la mise en forme appropriée.Ces symboles sont définis par
Time::DATE_FORMATS
, qui est un hachage de symboles dans des chaînes pour la fonction de formatage standard ... ou procs. Bwahaha.Mais bon, si vous ne pouvez pas résister à l'opportunité de monkeypatch, vous pouvez toujours lui donner une interface plus propre:
la source
Créez votre propre
%o
format.Initialiseur
config/initializers/srtftime.rb
Usage
Vous pouvez également l'utiliser avec
Date
etDateTime
:la source
Time
dans votre projet?Bien que Jonathan Tran ait dit qu'il recherchait le jour abrégé de la semaine en premier suivi du mois abrégé, je pense qu'il pourrait être utile pour les personnes qui se retrouvent ici de savoir que Rails a un support prêt à l'emploi pour les plus mois long couramment utilisable, nombre entier de jour ordinalisé, suivi de l'année, comme dans
June 1st, 2018
.Il peut être facilement réalisé avec:
Ou:
Vous pouvez également vous en tenir à une instance de temps si vous le souhaitez:
Vous pouvez trouver plus de formats et de contexte sur la façon d'en créer un personnalisé dans la documentation de l'API Rails .
la source