【问题标题】:How do I add future dates to table?如何将未来日期添加到表格中?
【发布时间】:2014-03-18 16:14:18
【问题描述】:

我正在 Rails 中建立一个时间表,我需要查看今天的日期是否与将来某个事件的日期相匹配。我有一个带有日期字段的事件模型,并且我知道所有未来事件的日期,但是如何以 Rails 能够理解的方式将这些日期添加到表格中?

我想做这样的事情:

if Time.now is equal to next event
  # do this

Time.now 输出

2014-03-18 11:05:14 -0500

如何将这种格式添加到表中的日期,以便将 Time.now 与未来事件的日期进行比较?

编辑

假设我正在 Rails 控制台中创建一个新事件,并且我希望事件的日期为 2014 年 4 月 1 日。我试图找出在控制台中输入日期所需的语法。例如,要在控制台中创建一个事件,我会做类似

Event.create(name: "Event1", date: ??) 

在计算机可以理解的语法中,我应该用什么代替 2014 年 4 月 1 日的问号?我需要日期时间格式的 2014 年 4 月 1 日,而不是字符串。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    seeds.rb 是——正如文件扩展名所暗示的——只是 Ruby。

    您可以提供可用 Ruby 库可以解析为 TimeDate 对象的任何形式的日期。

    如果你想保持可读性,你可以使用Date.parse:

    Event.create(name: 'Event1', date: Date.parse('Apr 1 2014'))
    Event.create(name: 'Event2', date: Date.parse('April 1, 2014'))
    Event.create(name: 'Event3', date: Date.parse('1-Apr-14'))
    

    或者,如果您还需要人类可读的时间,Time.parse

    Event.create(name: 'Event4', date: Time.parse('09:15 1 Apr 2014'))
    Event.create(name: 'Event5', date: Time.parse('April 1, 2014, 9:15am'))
    Event.create(name: 'Event6', date: Time.parse('1-Apr-14, 09:15 -0700'))
    

    如果您更喜欢使用 UNIX 时间戳,Time.at 会从它们创建一个新的 Time 对象(与解析文本日期相比,它提供了轻微的性能优势):

    Event.create(name: 'Event7', date: Time.at(1395166977))
    

    【讨论】:

      【解决方案2】:

      如果您在数据库中将next_event 定义为datetime 列,那么当您从数据库加载它时,rails 会自动将其初始化为date_time 对象。你只需要这个

      if Time.now.to_date == next_event.to_date
      

      要添加未来的日子,您可以使用days.from_now 方法

      例如

      1.days.from_now #Wed, 19 Mar 2014 16:29:26 UTC +00:00
      2.days_from_now #Thu, 20 Mar 2014 16:30:16 UTC +00:00
      

      或者你可以使用普通的加法

      Time.now + 2.days
      Time.now + 2.hours
      Time.now + 10.minutes
      
      Event.create(name: "Event1", date: (Time.now + 1.day))
      

      【讨论】:

      • 对,但我通过种子文件加载所有事件,那么Game.create(date: ??) 的语法是什么@
      • @reknirt:我不确定我是否理解您的要求。但是,如果我的编辑回答了您的问题,请告诉我
      猜你喜欢
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多