當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby Date類用法及代碼示例


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