je suis tombé sur le même problème avec mon test de concombre aujourd'hui! Le problème (comme indiqué par iain) est que Date::DATE_FORMATS[:long]
est "%B %e, %Y"
. Le %e
, selon ri strftime
, donne un complété par des blancs nombre de jours:
%d - Day of the month, zero-padded (01..31)
%-d no-padded (1..31)
%e - Day of the month, blank-padded (1..31)
Donc, par défaut, ce que je vois dans Rails 3.1.3:
> d = '2012-02-01'.to_date
=> Wed, 01 Feb 2012
> d.to_s(:long)
=> "February 1, 2012"
Étrangement, Rails utilisations un format de jour différent pour le :long
format de fois (%d
, qui donne "01"
) comme pour dates (%e
, qui y OMAINES " 1"
):
> d = '2012-02-01'.to_time
=> 2012-02-01 00:00:00 UTC
> d.to_s(:long)
=> "February 01, 2012 00:00"
> Time::DATE_FORMATS[:long]
=> "%B %d, %Y %H:%M"
> Date::DATE_FORMATS[:long]
=> "%B %e, %Y"
La solution est alors d'utiliser "%-d"
pour la journée dans votre chaîne de format au lieu de %e
:
> Date::DATE_FORMATS[:long] = "%B %-d, %Y"
=> "%B %-d, %Y"
> d = '2012-02-01'.to_date
Wed, 01 Feb 2012
> d.to_s(:long)
=> "February 1, 2012"
Vous pouvez simplement ajouter cette ligne à une nouvelle initialiseur , config/initializers/date_formats.rb
:
Date::DATE_FORMATS[:long] = "%B %-d, %Y"
Veuillez commenter https://github.com/rails/rails/pull/1994 si vous souhaitez voir cette valeur par défaut modifiée dans Rails.
Montrez-nous l'étape et sa définition s'il vous plaît. –
Voici les définitions des étapes -> https://gist.github.com/b6ba990085532c6d05bf –