4

该类DateTime似乎是多余的,并且在阅读了该类的 Rails 扩展文档中的这一点之后,它似乎也有潜在的危险:

DateTimes 不知道 DST 规则,因此在创建具有本地区域偏移量的 DateTime 时使用一致的非 DST 偏移量

在 Rails 文档中也有这个DateTime#to_time

尝试将 self 转换为 Ruby Time 对象;如果超出 Ruby Time 类的范围,则返回 self。如果 self 的偏移量不是 0,则 self 将原样返回,因为没有干净的方法将其映射到 Time。

我认为最后一部分是由于DateTime不识别 DST。

在我看来,我们有这个:

  • 该类Date表示没有时间的简单日期。
  • 该类Time表示一个特定的时间点,其中隐含包含日期。
  • 该类与类DateTime相同Time,但不了解 DST,有时无法转换为常规Time类。

那么应该DateTime从代码库中删除还是它是否有我所缺少的有用目的?

4

1 回答 1

3

DateTimeTime在 Rubies < 1.9.2 的 32 位机器上具有优势-TimeY2K38 问题的受害者,并且仅限于 32 位范围。这个问题在 64 位机器和/或最近的 Ruby 版本中得到了解决。如果DateTime例如 1.8 兼容性是必须的,或者您依赖使用其 API 中的方法(通常与Time.

于 2012-06-09T04:03:23.403 回答