携手创作,共同成长!这是我参与「掘金日新计划 · 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) |
| %H | 24 小时制的小时数 |
| %I | 12 小时制的小时数 |
| %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 类包含了非常多的方法
常用的方法有如下几种:
- time.year/time.month/time.day/time.hour/time.min/time.second :可以返回时间的年月日时分秒等
- time.wday:返回时间的星期数
- time.yday:返回时间的第多少天
- time.getgm:返回 UTC 表示的时间
- time.getlocal:返回当地时间