如何结合日期和时间?

时间:2013-10-20 15:05:34

标签: ruby-on-rails-3 fullcalendar

我正在创建一个Rails 3.2应用程序,我不知道如何处理日期和时间。 现在我在数据库中有一个名为start_date的字段,它是一个日期时间戳,我还有一个名为start_time的字段。

我正在使用fullcalendar插件,为此我需要将start_date和start_time结合起来。我怎样才能做到这一点? (并非数据库中的所有事件都有start_time)。

感谢所有输入!

1 个答案:

答案 0 :(得分:1)

Ruby拥有DateTime class,它基本上将日期和时间合并为一个对象。我建议进行迁移,创建一个名为start的新字段,然后将现有的start_datestart_time字段合并为一个字段:

def up
  add_column :events, :start, :datetime

  Event.find_each do |e|
    d = e.start_date
    t = e.start_time
    e.start = DateTime.new(d.year, d.month, d.day, t.hour, t.min, t.sec)
  end

  remove_column :events, :start_date
  remove_column :events, :start_time
end

def down
  add_column :events, :start_date, :datetime
  add_column :events, :start_time, :datetime

  Event.find_each do |e|
    s = e.start
    e.start_date = s.to_date
    e.start_time = s.to_time
  end

  remove_column :events, :start
end

如果您以后需要获取日期或时间组件,可以使用to_dateto_time,并且合并后的DateTime应与fullcalendar配合使用。

相关问题