如何在RUBY中显示(2018年4月25日星期三)到(2018-04-25)的日期

时间:2018-04-17 18:04:40

标签: ruby-on-rails ruby date rubygems

我正在尝试倒计时从开始日期到结束日期的日期,我在Ruby中构建了一个方法,但是我得到了一个"未定义的方法`div'"终端出错。 在玩完之后我发现当我在终端中回叫开始/结束日期时,它会以这种格式返回日期:星期三,2018年4月25日。 我相信这就是为什么我得到未定义的方法错误。 有谁知道如何转换日期?

我的代码如下:

  def event_days
    Integer(Date.new(self.end_date.to_time) - (closer_to_end_date))
  end

  def closer_to_end_date
    if Date.today >= Date.new(self.start_date)
      Date.today
    elsif Date.new(self.start_date) >= Date.today
      Date.new(self.start_date)
    end
  end

仅供参考:当我将end_date / start_date硬编码为(2018-04-25)时,该方法非常有效。

GitHub电话回复:https://github.com/belalkamara/CapStone/blob/phase1/app/models/activity.rb

3 个答案:

答案 0 :(得分:1)

您可以使用:

date.strftime("%F")

要检查的好资源是strftime的文档:https://apidock.com/ruby/Date/strftime

答案 1 :(得分:0)

我弄清楚它是什么......我删除了Date.new()调用并且它有效!谢谢JP Silvashy& Pierre-Adrien Buisson为您提供帮助。 所以现在看起来像这样:

  def event_days
    Integer(self.end_date - closer_to_end_date)
  end

  def closer_to_end_date
    if Date.today >= self.start_date
      Date.today
    elsif self.start_date >= Date.today
      self.start_date
    end
  end

答案 2 :(得分:0)

在Rails中你可以

string = "Wed, 25 Apr 2018"
date = string.to_date.strftime("%F")
=> "2018-04-25"

在Ruby中

require 'date'
string = "Wed, 25 Apr 2018"
DateTime.parse(string).strftime("%F")