📅  最后修改于: 2023-12-03 15:04:47.140000             🧑  作者: Mango
在 Rails 中,时间是一个非常重要的概念,我们经常需要对时间进行格式化显示,ISO8601 是一种国际标准的时间格式,在 Rails 里也有对它的支持。
ISO8601 格式包含日期和时间的信息,格式如下:
YYYY-MM-DDTHH:MM:SS[.sss]Z
其中,YYYY 表示年份,MM 表示月份,DD 表示日期,HH 表示小时,MM 表示分钟,SS 表示秒数,sss 表示毫秒数,Z 表示时区。注意,后面的 [] 表示可选项。
例如,当前时间的 ISO8601 格式为:
2022-06-09T21:54:20.123456Z
在 Rails 中,我们可以使用 ActiveSupport::TimeZone 类来表示时区,使用 Time 或 DateTime 类来表示时间。
我们可以使用 Time 或 DateTime 实例的 iso8601
方法将时间转为 ISO8601 格式。
time = Time.zone.now
# => Thu, 09 Jun 2022 21:54:20 UTC +00:00
# 使用 Time 实例的 iso8601 方法
time.iso8601
# => "2022-06-09T21:54:20.123456Z"
datetime = DateTime.now
# => Thu, 09 Jun 2022 21:54:20 +0000
# 使用 DateTime 实例的 iso8601 方法
datetime.iso8601
# => "2022-06-09T21:54:20+00:00"
我们可以使用 Time 或 DateTime 类的 parse
或 strptime
方法将 ISO8601 格式的时间字符串转为实例。
# 使用 Time.parse 方法将 ISO8601 时间字符串转为 Time 实例
Time.parse("2022-06-09T21:54:20.123456Z")
# => 2022-06-09 21:54:20 UTC
# 使用 DateTime.parse 方法将 ISO8601 时间字符串转为 DateTime 实例
DateTime.parse("2022-06-09T21:54:20+00:00")
# => Thu, 09 Jun 2022 21:54:20 +0000
ISO8601 是一种国际标准的时间格式,在 Rails 中我们可以方便地使用 ActiveSupport::TimeZone、Time 和 DateTime 类来处理时间并转为 ISO8601 格式。