本文简要介绍ruby语言中 Date类
的用法。
date and datetime class - Tadayoshi Funaba 1998-2011
‘date’ 提供两个类: Date
和 DateTime
。
术语和定义
一些术语和定义基于 ISO 8601 和 JIS X 0301。
日历 Date
日历日期是日历年的特定日期,由其在该年的日历月内的序号标识。
在这些类中,这就是所谓的“civil”。
序数 Date
序号日期是日历年中的特定日期,由其在年内的序号标识。
在这些类中,这就是所谓的“ordinal”。
周 Date
周日期是由日历周和天数标识的日期。
日历周是一个日历年内的 7 天周期,从星期一开始,并由其在该年内的序数标识;一年中的第一个日历周包括该年的第一个星期四。在公历中,这相当于包括 1 月 4 日在内的一周。
在这些类中,这就是所谓的“commercial”。
朱利安天数
儒略日数是自公元前 4713 年 1 月 1 日(在儒略历中)中午(格林威治平均值 Time
)以来经过的天数。
在本文档中,天文儒略日数与原始儒略日数相同。而按时间顺序排列的儒略日数是儒略日数的变体。它的日子从当地时间午夜开始。
在本文档中,当术语“Julian day number” 简单出现时,它只是指“年代儒略日数”,而不是原文。
在这些类中,称为“ajd” 和“jd”。
修改儒略日数
修改后的儒略日数是自公元 1858 年 11 月 17 日(公历)午夜(协调通用 Time
)以来经过的天数。
在本文档中,天文修正儒略日数与原始修正儒略日数相同。而按时间顺序修改的儒略日数是修改后的儒略日数的变体。它的日子从当地时间午夜开始。
在本文档中,当简单地出现“修改儒略日数”一词时,它只是指“按时间顺序修改的儒略日数”,而不是原文。
在这些类中,称为“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 Date.valid_civil?用法及代码示例
- Ruby DateTime jisx0301()用法及代码示例
- Ruby Date cwday()用法及代码示例
- Ruby Date ctime()用法及代码示例
- Ruby Date.gregorian?用法及代码示例
- Ruby Date asctime()用法及代码示例
- Ruby DateTime类用法及代码示例
- Ruby DateTime.hour用法及代码示例
- Ruby DateTime.jd用法及代码示例
- Ruby DateTime.zone用法及代码示例
- Ruby DateTime ordinal()用法及代码示例
- Ruby DateTime.second用法及代码示例
- Ruby Date.strftime用法及代码示例
- Ruby Date.valid_ordinal?用法及代码示例
- Ruby DateTime to_datetime()用法及代码示例
- Ruby DateTime civil()用法及代码示例
- Ruby Date.leap?用法及代码示例
- Ruby DateTime.second_fraction用法及代码示例
- Ruby Date.today用法及代码示例
- Ruby Date.mday用法及代码示例
- Ruby Date.next_year用法及代码示例
- Ruby Date.day用法及代码示例
- Ruby Date.d ===用法及代码示例
- Ruby Date.strptime用法及代码示例
- Ruby DateTime second_fraction()用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Date类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。