我有一个字符串变量,其日期如下:
@date = "2016-09-01"
我有另一个变量,有这样的一天:
@day = 5
如何使用@day
值更改日期的日期?
我需要这个结果:
@date = "2016-09-05"
答案 0 :(得分:3)
试试这个
@date = '2016-09-01'.to_date
@day = 5
DateTime.new(@date.year, @date.month, @day).to_date.strftime('%Y-%m-%d')
答案 1 :(得分:2)
如果你只想使用普通字符串,你只需要替换日期字符串中的最后2个字符,如下所示:
@date[-2..-1] = @day.to_s.rjust(2, "0")
答案 2 :(得分:2)
您有两种选择:
转换为日期可能是更安全的选项,因为它会考虑区域设置。 (例如:MM / DD / YYYY格式与DD / MM / YYYY格式)
将日期转换为字符串,将日期组件重新格式化为字符串:
require 'date'
d = Date.parse(@date)
Date.new(d.year,d.month,@day).to_s
Regexp解决方案:
@date.sub!(/(\d{4}-\d{2}-)\d{2}$/, '\1' + "%02d"% @day)