本文簡要介紹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類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。