当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Date类用法及代码示例


date and datetime class - Tadayoshi Funaba 1998-2011

‘date’ 提供两个类: Date DateTime

术语和定义

一些术语和定义基于 ISO 8601 和 JIS X 0301。

日历 Date

日历日期是日历年的特定日期,由其在该年的日历月内的序号标识。

在这些类中,这是so-called “civil”。

序数 Date

序号日期是日历年中的特定日期,由其在年内的序号标识。

在这些类中,这是so-called “ordinal”。

Date

周日期是由日历周和天数标识的日期。

日历周是一个日历年内的 7 天周期,从星期一开始,并由其在该年内的序数标识;一年中的第一个日历周包括该年的第一个星期四。在公历中,这相当于包括 1 月 4 日在内的一周。

在这些类中,这是so-called “commercial”。

朱利安天数

儒略日数是自公元前 4713 年 1 月 1 日(在儒略历中)中午(格林威治平均值 Time )以来经过的天数。

在本文档中,天文儒略日数与原始儒略日数相同。而按时间顺序排列的儒略日数是儒略日数的变体。它的日子从当地时间午夜开始。

在本文档中,当术语“Julian day number” 简单出现时,它只是指“年代儒略日数”,而不是原文。

在这些类中,它们是so-called “ajd” 和“jd”。

修改儒略日数

修改后的儒略日数是自公元 1858 年 11 月 17 日(公历)午夜(协调通用 Time )以来经过的天数。

在本文档中,天文修正儒略日数与原始修正儒略日数相同。而按时间顺序修改的儒略日数是修改后的儒略日数的变体。它的日子从当地时间午夜开始。

在本文档中,当简单地出现“修改儒略日数”一词时,它只是指“按时间顺序修改的儒略日数”,而不是原文。

在这些类中,它们是so-called “amjd” 和“mjd”。

Date

Object 的子类,包括 Comparable 模块并轻松处理日期。

Date 对象是用 Date::new , Date::jd , Date::ordinal , Date::commercial , Date::parse , Date::strptime , Date::today , Time#to_date 等创建的。

require 'date'

Date.new(2001,2,3)
 #=> #<Date: 2001-02-03 ...>
Date.jd(2451944)
 #=> #<Date: 2001-02-03 ...>
Date.ordinal(2001,34)
 #=> #<Date: 2001-02-03 ...>
Date.commercial(2001,5,6)
 #=> #<Date: 2001-02-03 ...>
Date.parse('2001-02-03')
 #=> #<Date: 2001-02-03 ...>
Date.strptime('03-02-2001', '%d-%m-%Y')
 #=> #<Date: 2001-02-03 ...>
Time.new(2001,2,3).to_date
 #=> #<Date: 2001-02-03 ...>

所有日期对象都是不可变的;因此不能修改自己。

日期对象的概念可以表示为天数、偏移量和日历改革日期的元组。

天数表示时间维度的绝对位置。偏移量是相对调整,它根据天数确定解码的本地时间。历法改革之日是新风格的开始之日。西方的旧式是凯撒采用的儒略历。新的样式是公历,它是许多国家现行的民用历法。

天数实际上是天文儒略日数。该类中的偏移量通常为零,不能直接指定。

可以使用可选参数创建 Date 对象,将日历改革的日期作为儒略日数,应该是 2298874 到 2426355 或负/正无穷大。默认值为Date::ITALY (2299161=1582-10-15)。另见 sample/cal.rb。

$ ruby sample/cal.rb -c it 10 1582
    October 1582
 S  M Tu  W Th  F  S
    1  2  3  4 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

$ ruby sample/cal.rb -c gb  9 1752
   September 1752
 S  M Tu  W Th  F  S
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Date 对象有多种方法。请参阅每个参考。

d = Date.parse('3rd Feb 2001')
                             #=> #<Date: 2001-02-03 ...>
d.year                       #=> 2001
d.mon                        #=> 2
d.mday                       #=> 3
d.wday                       #=> 6
d += 1                       #=> #<Date: 2001-02-04 ...>
d.strftime('%a %d %b %Y')    #=> "Sun 04 Feb 2001"

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Date类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。