2016-09-02 7 views
0

私はこのような日付の文字列変数があります。日付文字列の日付を変更するにはどうすればよいですか?

@date = "2016-09-01" 

をそして、私はこのような日と別の変数を持っている:

@day = 5 

にはどうすれば@day値を使用して日付の日を変更することができます?

私はこの結果を必要とする:あなたは単なる文字列で作業したい場合は

@date = "2016-09-05" 

答えて

2

を試してみて、あなただけの、このような日付文字列から最後の2つの文字を置き換えることができます:

@date[-2..-1] = @day.to_s.rjust(2, "0") 
3

はこの

@date = '2016-09-01'.to_date 
@day = 5 
DateTime.new(@date.year, @date.month, @day).to_date.strftime('%Y-%m-%d') 
2

2つのオプションがあります。

  1. 日付に変換し、日付を更新し、文字列として再フォーマットします。
  2. 正規表現を使用して、日付コンポーネントのみを置き換えます。

ロケール設定が考慮されるため、おそらく日付に変換する方が安全です。 (例:DD/MM/YYYY形式対MM/DD/YYYY形式)

文字列として日コンポーネント再フォーマットを更新し、文字列に日付を変換する:

require 'date' 
d = Date.parse(@date) 
Date.new(d.year,d.month,@day).to_s 

正規表現のソリューション:

@date.sub!(/(\d{4}-\d{2}-)\d{2}$/, '\1' + "%02d"% @day) 
関連する問題