有什么区别DateTime
and Time
Ruby 中的类以及哪些因素会导致我选择其中之一?
较新版本的 Ruby(2.0+)在这两个类之间并没有真正的显着差异。由于历史原因,某些库会使用其中之一,但不一定需要关注新代码。选择一个以保持一致性可能是最好的,因此请尝试符合您的图书馆的期望。例如,ActiveRecord 更喜欢 DateTime。
在 Ruby 1.9 之前的版本和许多系统上,时间表示为 32 位有符号值,描述自 UTC 1970 年 1 月 1 日以来的秒数,这是 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 环境中是这样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)