小编典典

Ruby中日期时间和时间的区别

all

DateTimeRuby 中的和类有什么区别Time,哪些因素会导致我选择其中一个?


阅读 65

收藏
2022-06-01

共1个答案

小编典典

较新版本的 Ruby (2.0+)
在这两个类之间并没有真正的显着差异。由于历史原因,一些库会使用其中一种,但不一定需要关注新代码。选择一个以保持一致性可能是最好的,因此请尝试与您的库所期望的相结合。例如,ActiveRecord
更喜欢 DateTime。

在 Ruby 1.9 之前的版本和许多系统上,时间表示为一个 32 位有符号值,描述自 1970 年 1 月 1 日 UTC 以来的秒数,一个围绕
POSIX 标准time_t值的薄包装器,并且是有界的:

Time.at(0x7FFFFFFF)
# => Mon Jan 18 22:14:07 -0500 2038
Time.at(-0x7FFFFFFF)
# => Fri Dec 13 15:45:53 -0500 1901

较新版本的 Ruby 能够处理更大的值而不会产生错误。

DateTime 是一种基于日历的方法,其中单独存储年、月、日、小时、分钟和秒。这是一个 Ruby on Rails 构造,用作 SQL 标准
DATETIME 字段的包装器。这些包含任意日期,并且几乎可以表示任何时间点,因为表达式的范围通常非常大。

DateTime.new
# => Mon, 01 Jan -4712 00:00:00 +0000

所以令人放心的是,DateTime 可以处理来自亚里士多德的博客文章。

选择一个时,差异现在有些主观。从历史上看,DateTime 提供了以日历方式操作它的更好选项,但其中许多方法也已移植到 Time 中,至少在 Rails
环境中是这样。

2022-06-01