次のような文字列がある場合string = "08/01/2012"
Rubyで「2012-08-01」を1行で返すにはどうすればよいですか?
たとえば、最後の「/」の後の数字のセットを取り、それらを最初に挿入してから、「/」を「-」に置き換えます。
あなたは日付を扱っているので、それが最も柔軟で安定したアプローチであるため、私はDate
ライブラリを調べます(いくつかの機能についてはそうする必要があります):require 'date'
Date.strptime(string, '%m/%d/%Y').strftime('%Y-%m-%d')
#=> "2012-08-01"
ご覧のとおり、strptime
( "string parse time")とstrftime
( "string format time")の両方が、実行していることを正確に説明するフォーマット文字列を取ります。
通過したくない場合は、次のようDate
に使用できます。gsub
string.gsub(%r{(\d+)/(\d+)/(\d+)}, '\3-\1-\2')
#=> "2012-08-01"
m, d, y = string.split("/")
"#{y}-#{m}-#{d}"
また
string.split("/").rotate(-1).join("-")
Michael Kohl answer is correct
just another answer
Date.parse(string).strftime('%Y-%d-%m')
month, day, year = string.split('/').map(&:to_i)
rearranged = sprintf "%04d-%02d-%02d", year, month, day
それは(to_i
各要素で行うという点で)少し余分な作業を行いますが、後で役立つ可能性があります。
I find it more simple:
'30/10/2016'.split('/').reverse().join('-')