有什么理由使用日期吗?

时间:2012-05-31 14:35:08

标签: ruby datetime date

至少有三种类型代表时间:TimeDateDateTime(来自ActiveSupport)。

我的问题是,DateTime可以完全取代Date吗?换句话说,如果我可以使用DateTime,是否有理由使用Date

3 个答案:

答案 0 :(得分:1)

require 'date'
d = Date.today
dt = DateTime.now
p Date.public_methods - DateTime.public_methods
#=>[:today]
p DateTime.public_methods - Date.public_methods
#=>[:now]
p d.public_methods - dt.public_methods
#=>[]
p dt.public_methods - d.public_methods
#=>[:hour, :min, :minute, :sec, :second, :sec_fraction, :second_fraction, :offset, :zone, :new_offset]

DateTime是Date的子类。使用DateTime,您将丢失today类方法并获得now作为回报。你不会失去实例方法。

答案 1 :(得分:1)

如果您只想存储日期,例如生日或某个事件发生的某一天,那么只使用日期会更容易。然后,您不会因不同的时区和时区计算而产生麻烦。如果您使用DateTime,那么如果您将-2小时的偏移量添加到00:00 am,那么您将获得前一天的晚上10:00。

答案 2 :(得分:0)

日期不会存储有关时间的任何信息,也不会存储时区信息。因此,如果在某些时候您需要使用时间数据,则可能会遇到麻烦。

Cf this link,我清楚地知道应该使用什么类,何时以及如何使用。