Ich lief in das gleiche Problem mit meinem Gurken Test heute!
Das Problem (wie bereits erwähnt) ist Date::DATE_FORMATS[:long]
ist "%B %e, %Y"
. Die %e
nach ri strftime
, ergibt sich ein Leerzeichen aufgefüllt Tage Nummer:
%d - Day of the month, zero-padded (01..31)
%-d no-padded (1..31)
%e - Day of the month, blank-padded (1..31)
So standardmäßig ist das, was ich in Rails siehe 3.1.3:
> d = '2012-02-01'.to_date
=> Wed, 01 Feb 2012
> d.to_s(:long)
=> "February 1, 2012"
Merkwürdigerweise Rails Anwendungen ein anderes Tag-Format für das Format der :long
mal (%d
, die "01"
ergibt), wie für Daten (%e
, worin Y ields " 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"
Die Lösung dann "%-d"
für den Tag in Ihrem Format-String statt %e
zu verwenden ist:
> 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"
Sie nur diese Zeile zu einem neuen initializer hinzufügen , config/initializers/date_formats.rb
:
Date::DATE_FORMATS[:long] = "%B %-d, %Y"
Bitte kommentieren Sie https://github.com/rails/rails/pull/1994, wenn Sie möchten, dass dieser Standard in Rails geändert wird.
Zeigen Sie uns bitte den Schritt und seine Definition. –
Hier sind die Schrittdefinitionen -> https://gist.github.com/b6ba990085532c6d05bf –