Это не сработает, потому что это не тот формат, который указан.Для английского языка это , как указываются форматы даты:
formats:
default: "%Y-%m-%d"
long: "%B %d, %Y"
short: "%b %d"
Здесь - документы для этих процентов заполнителей, если вам интересно.
Чтобы решить вашу проблему, я бы создал дату, локализовал ее и заменил части:
date = Date.new(2000, 12, 31)
I18n.l(date).sub('2000', 'yyyy').sub('12', 'mm').sub('31', 'dd')
# => "yyyy-mm-dd"
Обратите внимание, что это может не сработать, если в локали используется двухзначный формат года.Давайте попробуем это для некоторых локалей (используя значение по умолчанию из rails-i18n):
def get_date_string(locale = I18n.current)
date = Date.new(2000, 12, 31)
I18n.l(date, locale: locale)
.sub('2000', 'yyyy')
.sub('12', 'mm')
.sub('31', 'dd')
end
formats = %i[en en-US en-GB es de fr pt].map do |locale|
[locale, get_date_string(locale)]
end.to_h
formats
будет:
{
:en=>"yyyy-mm-dd",
:"en-US"=>"mm-dd-yyyy",
:"en-GB"=>"dd-mm-yyyy",
:es=>"dd/mm/yyyy",
:de=>"dd.mm.yyyy",
:fr=>"dd/mm/yyyy",
:pt=>"dd/mm/yyyy"
}