Ruby 手册 | 26 - 时间 Time

137 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详情

一、时间 Time

Ruby 中对时间的处理需要使用到 Time 类,创建一个 Time 类的对象需要用到 local 方法,可以一次通过参数指定时间对象的年月日时分秒微妙。

time = Time.local(2022, 8, 30, 22, 00, 00, 000)
puts time.class
puts time

执行上述代码,输出结果如下:

Time
2022-08-30 22:00:00 +0800

Time 对象的 now 函数可以获取当前时间(本地时间),Time 对象可以使用比较运算符来进行时间的比较,时间还可以进行算数运算既加减和差值运算,差值运算返回的单位是微妙

t1 = Time.now
t2 = Time.local(2022, 8, 29, 22, 00, 00, 000)

puts t1 > t2
puts t1 - t2
puts t2 + 3600 * 24

执行上述代码,输出结果如下:

true
13923.981565
2022-08-29 22:00:00 +0800

格式化时间也是比较常见的操作,格式化时间需要用到的方法时 strftime,可以根据转义符按照特定的格式输出时间。

t = Time.now

puts t.strftime("%Y-%m-%d %H:%M:%S")
puts t.strftime("%y-%m-%d %I:%M:%S")
puts t.strftime("%Y %B %d %p")

执行上述代码,输出结果如下:

2022-08-29 01:57:56
22-08-29 01:57:56
2022 August 29 AM

常用的转义字符及含义如下:

转义字符含义
%A星期的英文全称(Monday)
%a星期的英文简称(Mon)
%B月份的英文全称(January)
%b星期的英文简称(January)
%d日期数字(01-31)
%H24 小时制的小时数
%I12 小时制的小时数
%j一年中的第几天
%M分钟
%m月份数字
%p上午或者下午 AM PM
%S秒数
%U周数字,以第一个星期天为第一周开始计算
%W周数字,以第一个星期一为第一周开始计算
%w星期数字,星期天为 0,星期一为 1
%X时刻
%Y年份
%y年份,后两位数

时间对象转换为字符串可以使用 to_s 方法,而字符串转换为时间可以使用到 Time 类的 parse 方法,将时间格式的字符串作为参数

require 'time'

time_class = Time.parse("2022-08-30 01:57:56")
puts time_class.class
puts time_class

执行上述代码,输出结果如下:

Time
2022-08-30 01:57:56 +0800

Time 类包含了非常多的方法

图片.png

常用的方法有如下几种:

  • time.year/time.month/time.day/time.hour/time.min/time.second :可以返回时间的年月日时分秒等
  • time.wday:返回时间的星期数
  • time.yday:返回时间的第多少天
  • time.getgm:返回 UTC 表示的时间
  • time.getlocal:返回当地时间