如何更改日期字符串中的日期?

时间:2016-09-02 01:01:11

标签: ruby

我有一个字符串变量,其日期如下:

@date = "2016-09-01"

我有另一个变量,有这样的一天:

@day = 5

如何使用@day值更改日期的日期?

我需要这个结果:

@date = "2016-09-05"

3 个答案:

答案 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)

您有两种选择:

  1. 转换为日期,更新日期组件,重新格式化为字符串。
  2. 使用正则表达式仅替换日期组件。
  3. 转换为日期可能是更安全的选项,因为它会考虑区域设置。 (例如: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)