Time
和DateTime
之间的差异与实现有关.DateTime
的大量功能来自Rails世界,是一个任意的日期和时间.它更像是一个基于日历的系统.自协调世界时1970年1月1日起,Time
以秒为单位,与时区无关.在一些系统上,它被限制为1901到2038之间的值,这是对传统上该值存储为带符号32位整数的限制,但较新版本的Ruby可以处理更大的范围,根据需要使用64位值或BigNum.
简而言之,DateTime
是从Rails中的数据库中得到的,而Ruby传统上使用的是时间.如果你使用的是日期很重要的价值观,你想知道月底或六周前的哪一天,请使用DateTime.如果你只是在测量经过的时间,而不在乎它,那就用时间.如果需要,它们很容易在两者之间转换.
另一方面,Date
只是一个日历日期,没有任何关联的时间.你可能想在与时间无关的地方使用这些.
strptime
是"解析时间"的缩写,strftime
是"格式化时间".也就是说,strptime
与strftime
相反,尽管它们方便地使用相同的格式规范.我很少看到使用strptime
,因为DateTime.parse
通常很擅长了解正在发生的事情,但是如果你真的需要详细说明,一定要使用遗留解析器.