如何将未来日期添加到表格中?

时间:2014-03-18 16:14:18

标签: ruby-on-rails ruby

我在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日的日期时间格式,而不是字符串。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您已在数据库中将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))

答案 1 :(得分: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))