【问题标题】:Any reason to use Date?有什么理由使用日期?
【发布时间】:2012-05-31 14:35:08
【问题描述】:

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

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

【问题讨论】:

  • DateTime 在 Ruby 标准库中。
  • 您在提问之前似乎根本没有真正研究过这个问题。网上有很多关于 DateTime vs Date vs Time 的讨论。

标签: ruby datetime date


【解决方案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 作为回报。您不会丢失实例方法。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      Cf this link,我发现它清楚地知道应该使用哪些类、何时以及如何使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-29
        • 2013-09-27
        • 2011-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多