こんにちは。
Date.strptime を使って、2018年4月1日
から日付オブジェクトを作り、
それをDate#strftime でフォーマットを与えて文字列にすれば、
2018-04-01
が得られると思います。
以下のような感じです。
ruby
1require 'date'
2
3%w[
4 2018年4月1日
5 2018年4月10日
6 2018年10月1日
7 2018年10月10日
8].each do |date_str|
9
10 puts Date.strptime(date_str, '%Y年%m月%d日').strftime('%Y-%m-%d')
11
12end
上記を実行すると、以下のように出力されます。
2018-04-01
2018-04-10
2018-10-01
2018-10-10
補足
質問の趣旨から外れるかもしれませんが、Date
のメソッドを使わずに、
2018年4月1日
から、年月日それぞれの数字を取得するために正規表現を使い、
それらを 2018-04-01
にするのに、 sprintf を使う手もあります。
ruby
1%w[
2 2018年4月1日
3 2018年4月10日
4 2018年10月1日
5 2018年10月10日
6].each do |date_str|
7
8 if /^(\d{4})年(\d{1,2})月(\d{1,2})日$/ =~ date_str
9 puts sprintf('%4d-%02d-%02d',$1, $2, $3)
10 end
11
12end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。