Ruby日期和时间处理和用法

本文概述

  • 日期
  • 日期时间
  • 时间
  • 创建一个新的时间实例
  • 使用gm, utc和本地功能的时间
  • 处理时间的实例
  • 时区和夏令时
Ruby在其文档中主要有三个与日期和时间有关的类。
  • 日期
  • 日期时间
  • 时间
日期 Ruby date提供了两个类, Date和DateTime。
要了解日期的概念, 首先我们需要了解一些术语。
  • 日历日期:日历日期是一年中一个日历月内的特定日期。
  • 序数日期:序数日期是由序号标识的日历年的特定日期。
  • 周日期:周日期是由日历周和天号标识的一天。该年的第一个日历周就是该年的第一个星期四。
  • 朱利安天数:朱利安天数是公元前4713年1月1日中午以来经过的日子。
  • 更改后的儒略日编号:更改后的儒略日编号为公元1858年11月17日午夜以来的经过日期。
Date对象是使用:: new, :: parse, :: today, :: jd, :strptime等创建的。所有date对象都是不可变的, 因此它们无法修改。
例:
require 'date' puts Date.new(2017, 4, 3) puts Date.jd(2451877) puts Date.ordinal(2017, 3) puts Date.commercial(2017, 5, 6) puts Date.parse('2017-02-03') puts Date.strptime('03-02-2017', '%d-%m-%Y') puts Time.new(2017, 10, 8).to_date

输出
Ruby日期和时间处理和用法

文章图片
Date对象具有多种方法, 如下面的示例所示。
例:
require 'date' d = Date.parse('4th Mar 2017') puts d.year puts d.mon puts d.mday putsd.wday puts d += 1 puts d.strftime('%a %d %b %Y')

输出
Ruby日期和时间处理和用法

文章图片
日期时间 Ruby DateTime是Date的子类。它可以轻松处理日期, 小时, 分钟, 秒和偏移量。
使用DateTime.new, DateTime.ordinal, DateTime.parse, DateTime.jd, DateTime.commercial, DateTime.now等创建的DateTime对象。
例:
require 'date' puts DateTime.new(2017, 3, 4, 5, 6, 7)

输出
Ruby日期和时间处理和用法

文章图片
日, 分钟, 秒或小时的最后一个元素可以是小数。
DateTime对象具有各种方法, 如下面的示例所示。
例:
require 'date' d = DateTime.parse('4th Mar 2017 02:37:05+05:40') puts d.hour puts d.min puts d.sec puts d.offset puts d.zone puts d += Rational('1.0') puts d = d.new_offset('+05:00') puts d.strftime('%I:%M:%S %p') puts d > DateTime.new(2000)

输出
Ruby日期和时间处理和用法

文章图片
时间 时间类是日期和时间的抽象。它在内部存储为从大纪元时间起的秒数。时间类对待GMT(格林威治标准时间)和UTC(协调世界时)等效。
时间可能看起来是相等的, 但相比之下, 它们可能会有所不同, 因为所有时间都可能有分数。
时间实现使用带符号的63位整数, Bignum或Rational。使用整数时, 时间会变慢。
创建一个新的时间实例 可以使用:: new创建新的Time实例。这将使用你当前系统的时间。也可以传递部分时间, 例如年, 月, 日, 小时, 分钟等。
创建新的时间实例时, 你至少需要经过一年。如果仅过去了一年, 则时间将默认为该年的1月1日, 当前系统时区为00:00:00。
例:
puts Time.new puts Time.new(2017, 3) puts Time.new(2017, 3, 4) puts Time.new(2017, 3, 4, 6, 5, 5, "+05:00")

输出
Ruby日期和时间处理和用法

文章图片
使用gm, utc和本地功能的时间 除了使用当前系统设置, 你还可以使用GMT, 本地和UTC时区。
例:
puts Time.local(2017, 2, 5)puts Time.local(2017, 2, 5, 4, 30)puts Time.utc(2017, 2, 5, 4, 30)puts Time.gm(2017, 2, 5, 4, 30, 36)

输出
Ruby日期和时间处理和用法

文章图片
处理时间的实例 创建时间实例之后, 我们可以通过以下方式来处理该时间。
例:
t = Time.new(1991, 07, 5, 9, 15, 33, "+09:00") puts t.friday? #=> false puts t.year #=> 1993 puts t.dst? #=> false puts t + (60*60*24*365) #=> 1994-02-24 12:00:00 +0900 puts t.to_i #=> 730522800 t1 = Time.new(2017) t2 = Time.new(2015) puts t1 == t2 #=> false puts t1 == t1 #=> true puts t1 < t2 #=> true puts t1 > t2 #=> false puts Time.new(2010, 10, 31).between?(t1, t2) #=> true

输出
Ruby日期和时间处理和用法

文章图片
时区和夏令时 时间对象可用于获取与时区有关的所有信息。所有信息将根据我们系统的当前时间显示。
例:
time = Time.new puts time.zone puts time.utc_offset puts time.zone puts time.isdst puts time.utc? puts time.localtime puts time.gmtime puts time.getlocal puts time.getutc

【Ruby日期和时间处理和用法】输出
Ruby日期和时间处理和用法

文章图片

    推荐阅读