2011-06-15 52 views
14

有没有一种方法可以用红宝石表示一段时间而不附带日期?我正在做一个时间跟踪应用程序,我只需要输入/输出时间,还有一个单独的日期列。用红宝石代表没有日期的时间

MySQL TIME数据类型只存储时间,但是在Rails中,它会在2000年1月1日之后返回。

我应该忽略日期部分,还是有办法消除它?

回答

9

有没有办法消除它,because

时间在内部存储为秒分数从纪元,1970年1月1日00:00 UTC的数量。

只是格式化是这样的:

t = Time.now 
t.strftime("at %I:%M%p") 
+0

我知道我可以这样格式化,我更担心减法和有两个不同的日期。 – loosecannon 2011-06-15 15:44:51

+2

根据您的精度要求,您只需使用t.hour,t.min,t.sec等手动处理它。当时间是23:00而出发时间是01:00时会发生什么? – sml 2011-06-15 15:52:37

+0

如果发生过,他们可以输入两个条目,这里没有任何机构可以工作,所以它现在不是问题。但是,是的,唉,我希望它会原生支持。 – loosecannon 2011-06-15 16:19:26

44

我们只是储存时间不附带任何日期为从凌晨起,一个整数列分钟(这是Postgres的不是MySQL,但仍然)。也许这种方法也适用于你?

+2

啊是的,我不需要以这种方式存储数据库,但可能是一个简单的方法来比较它们。 ActiveSupport包含一个time.seconds_since_midnight方法。 – loosecannon 2011-06-15 16:16:42

+0

这是一个好主意! – 2012-02-09 16:10:54

+1

正是我所需要的。这家伙是个天才。 – mraaroncruz 2012-04-17 15:21:36