我在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日的日期时间格式,而不是字符串。
谢谢!
答案 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库可以解析为Time
或Date
对象的任何形式提供日期。
如果您想让它具有人类可读性,可以使用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))