Ruby日期和时间

2025年3月17日 | 阅读 3 分钟

Ruby 的文档中主要有三个与日期和时间相关的类。

  • 日期
  • DateTime
  • 时间

日期

Ruby 的 Date 提供了两个类,Date 和 DateTime。

为了理解日期的概念,首先我们需要理解一些术语。

  • 日历日期: 日历日期是指一年中的某个月份中的某一天。
  • 序数日期: 序数日期是指通过其序数标识的日历年中的某一天。
  • 周日期: 周日期是指由日历周数和天数标识的一天。 一年中的第一周是包含当年的第一个星期四的那一周。
  • 儒略日: 儒略日是从公元前 4713 年 1 月 1 日中午开始经过的天数。
  • 改进儒略日: 改进儒略日是从公元 1858 年 11 月 17 日午夜开始经过的天数。

Date 对象使用 ::new、::parse、::today、::jd、::strptime 等创建。所有日期对象都是不可变的,因此它们不能修改自己。

示例

输出

Ruby date time 1

Date 对象具有各种方法,如下例所示。

示例

输出

Ruby date time 2

DateTime

Ruby 的 DateTime 是 Date 的一个子类。 它很容易处理日期、小时、分钟、秒和偏移量。

DateTime 对象使用 DateTime.new、DateTime.ordinal、DateTime.parse、DateTime.jd、DateTime.commercial、DateTime.now 等创建。

示例

输出

Ruby date time 3

日、分、秒或小时的最后一个元素可以是分数。

DateTime 对象具有各种方法,如下例所示。

示例

输出

Ruby date time 4

时间

Time 类是日期和时间的抽象。 它在内部存储为自纪元时间以来的秒数。 Time 类将 GMT(格林威治标准时间)和 UTC(协调世界时)视为等效。

时间可能看起来相等,但在比较时它们可能不同,因为所有时间都可能包含分数。

Time 实现使用带符号的 63 位整数、Bignum 或 Rational。 当使用整数时,Time 的工作速度会变慢。


创建一个新的 Time 实例

可以使用 ::new 创建一个新的 Time 实例。 这将使用您当前系统的时间。 还可以传递时间的部分,如年、月、日、小时、分钟等。

创建新的时间实例时,您至少需要传递一年。 如果只传递年份,则时间将默认为该年的 1 月 1 日 00:00:00,并使用当前系统时区。

示例

输出

Ruby date time 5

使用 gm、utc 和 local 函数的时间

除了使用当前系统设置外,您还可以使用 GMT、local 和 UTC 时区。

示例

输出

Ruby date time 6

使用时间实例

创建时间实例后,我们可以通过以下方式处理该时间。

示例

输出

Ruby date time 7

时区和夏令时

Time 对象可用于获取与时区相关的所有信息。 所有信息将根据我们系统的当前时间显示。

示例

输出

Ruby date time 8
下一个主题Ruby 范围