3

我的数据库中的表中有 2 列,1 是日期,1 是时间。我需要使用 ActiveRecord 将它们组合成一个 DateTime 对象。最好的方法是什么?

1.9.3-p194 :053 > date.class
 => Date 
1.9.3-p194 :054 > time.class
 => Time 
1.9.3-p194 :055 > date.to_time_in_current_zone
 => Wed, 04 Sep 2013 00:00:00 PDT -07:00 
1.9.3-p194 :056 > date.to_time_in_current_zone + time
TypeError: not an integer

我可以添加时间的各个字段,这似乎有效:

1.9.3-p194 :062 > date.to_time_in_current_zone + time.hour.hours + time.min.minutes + time.sec.seconds
 => Wed, 04 Sep 2013 12:30:00 PDT -07:00 

那不包括毫秒,没有Time毫秒?如果我不能有毫秒,这不是世界末日,但有没有更好的方法来做到这一点?

4

2 回答 2

11

抱歉偷看中间,实际上我在 8 个月左右的铁路上有点新,就像一个小人物在大人物之间交谈。我也面临同样的问题,我通过使用

date_time= (date.to_s + " " +time.to_s).to_datetime

我不知道它是对是错,但我的问题已经解决了。请给我关于这个的反馈:)

此外,Time还有毫秒可以通过#strftime格式%L指令访问。此外,可以通过使用来访问秒的较小部分%N

于 2013-09-05T05:53:30.553 回答
2
merged_datetime = DateTime.new(date_to_merge.year, date_to_merge.month,
                               date_to_merge.day, time_to_merge.hour,
                               time_to_merge.min, time_to_merge.sec)
于 2014-12-12T01:34:29.357 回答