date2 - もうひとつの日付計算クラス

Date

用語の定義

いくつか用語の定義は、ISO 8601、および JIS X 0301 に基づきます。

暦日付

暦日付は、暦年、暦月、および暦月の中の序数によって 指定される特定の日の日付です。

つまり、ごく当たり前の年月日による日付です。

年間通算日 (年日付)

年間通算日 (年日付) は、暦年、および暦年の中の序数によって指定される 特定の日の日付です。

暦週日付

暦週日付は、暦週と暦年中の序数による日付です。

暦週は、暦年中の序数によって指定される特定の7日の期間であり、月曜から 始まります。その年の第1暦週は、最初の木曜日を含む週とします。これは、1 月4日を含む週と同じです。

ユリウス日

ユリウス日は紀元前4713年1月1日 (ユリウス暦) 正午 (グリニッジ平均時) を 暦元とした通日 (経過日数) です。

この文書で、天文学的なユリウス日とは、本来のユリウス日と同じものです。 また、年代学的なユリウス日とは、地方時における零時を一日の始まりとする 流儀です。

この文書で、単に「ユリウス日」といった場合、それは本来のユリウス日でな く、「年代学的なユリウス日」を意味しています。

修正ユリウス日

修正ユリウス日は西暦1858年11月17日 (グレゴリオ暦) 正子/零時 (協定世界時) を 暦元とした通日 (経過日数) です。

この文書で、天文学的な修正ユリウス日とは、本来の修正ユリウス日と同じも のです。また、年代学的な修正ユリウス日とは、地方時における零時を一日の 始まりとする流儀です。

この文書で、単に「修正ユリウス日」といった場合、それは本来の修正ユリウ ス日でなく、「年代学的な修正ユリウス日」を意味しています。

スーパークラス

Object

インクルードしているモジュール

Comparable

クラスメソッド

civil([year[, mon[, mday[, start]]]])
new([year[, mon[, mday[, start]]]])

暦日付に相当する日付オブジェクトを生成します。

このクラスでは、紀元前の年を天文学の流儀で勘定します。 1年の前は零年、零年の前は-1年、のようにします。 月、および月の日は負、 または正の数でなければなりません (負のときは最後からの序数)。 零であってはなりません。

最後の引数は、グレゴリオ暦をつかい始めた日をあらわすユリウス日です。 グレゴリオ暦の指定として Date::GREGORIAN、 ユリウス暦の指定として Date::JULIAN を与えることもできます。 省略した場合は、Date::ITALY (1582年10月15日) になります。

jd も参照してください。

commercial([cwyear[, cweek[, cwday[, start]]]])

暦週日付に相当する日付オブジェクトを生成します。

週、および週の日 (曜日) は負、 または正の数でなければなりません(負のときは最後からの序数)。 零であってはなりません。

このメソッドに改暦前の日付を与えることはできません。

jd、および new も参照してください。

jd([jd[, start]])

ユリウス日に相当する日付オブジェクトを生成します。

このクラスのいくつかの重要なメソッドで、 負のユリウス日は保証されません。

new も参照してください。

nth_kday([year[, mon[, n[, k[, start]]]]])
その月の N番目 (-5 から 5、ただし零はのぞく) の K曜日 (0-6) を返します。
ordinal([year[, yday[, start]]])

年間通算日 (年日付) に相当する日付オブジェクトを生成します。

年の日は負、 または正の数でなければなりません (負のときは最後からの序数)。 零であってはなりません。

jd、および new も参照してください。

parse([str[, complete[, start]]])

与えられた日付表現を解析し、 その情報に基づいて日付オブジェクトを生成します。

省略可能なふたつ目の引数が真で、年が "00" から "99" の範囲であれば、 年の下2桁表現であるとみなしこれを補います。 なお、省略した場合は、偽とみなします。

_parse も利用できます。 このメソッドは parse と似ていますが、日付オブジェクトを生成せずに、 見いだした要素をハッシュで返します。

strptime([str[, format[, start]]])

与えられた雛型で日付表現を解析し、 その情報に基づいて日付オブジェクトを生成します。

たとえば、つぎのような書式を受けつけます:

%Y-%m-%d
%Y-%j
%G-W%V-%u
%s
%Q

_strptime も利用できます。 このメソッドは strptime と似ていますが、日付オブジェクト生成せずに、 見いだした要素をハッシュで返します。

strptime(3)、および strftime も参照してください。

today([start])
現在の日付に相当する日付オブジェクトを生成します。
valid_civil? (year, mon, mday[, start])
valid_date? (year, mon, mday[, start])

正しい暦日付であれば真、そうでないなら偽を返します。

jd、および civil も参照してください。

valid_commercial? (cwyear, cweek, cwday[, start])

正しい暦週日付であれば真、そうでないなら偽を返します。

jd、および commercial も参照してください。

valid_jd? (jd[, start])

真を返します。

対称性のため用意されていますが、実際的に意味はありません。

jd も参照してください。

valid_ordinal? (year, yday[, start])

正しい年間通算日 (年日付) であれば真、そうでないなら偽を返します。

jd、および ordinal も参照してください。

メソッド

self + n
self から n 日後の日付オブジェクトを返します。 n は数値でなければなりません。
self - x
x が日付オブジェクトなら、ふたつの差を返します。 あるいは x が数値ならば、self より x 日前の日付を返します。
self << n
self より n ヶ月前の日付オブジェクトを返します。 n は数値でなければなりません。
self <=> other
ふたつを比較し、-1、零、あるいは 1 を返します。 other は日付オブジェクトか、 天文学的なユリウス日をあらわす数値でなければなりません。
self === other
同じ日なら真を返します。
self >> n
self から n ヶ月後の日付オブジェクトを返します。 n は数値でなければなりません。
asctime
ctime
asctime(3) 書式の文字列を返します (ただし、末尾の "\n\0" は除く)。
cwday
暦週の日 (曜日) を返します (1-7、月曜は1)。
cweek
暦週を返します (1-53)。
cwyear
暦週における年を返します。
downto(min){|date| ...}
このメソッドは、step(min, -1){|date| ...} と等価です。
england
このメソッドは、new_start(Date::ENGLAND) と等価です。
gregorian
このメソッドは、new_start(Date::GREGORIAN) と等価です。
iso8601
rfc3339
ISO 8601 書式の文字列を返します (拡大表記はつかいません)。
italy
このメソッドは、new_start(Date::ITALY) と等価です。
jd

ユリウス日を返します。 時刻を含みません。

ajd も利用できます。 このメソッドは jd と似ていますが、天文学的なユリウス日を返します。 時刻を含みます。

jisx0301
JIS X 0301 書式の文字列を返します。 ただし、明治以前については ISO 8601 書式になります。 なお、明治6年以前についても太陰太陽暦を使用することはありません。
julian
このメソッドは、new_start(Date::JULIAN) と等価です。
leap?
閏年なら真を返します。
mday
day
月の日を返します (1-31)。
mjd

修正ユリウス日を返します。 時刻の情報を含みません。

amjd も利用できます。 このメソッドは mjd と似ていますが、天文学的な修正ユリウス日を返します。 時刻を含みます。

mon
month
月を返します (1-12)。
new_start([start])

self を複製して、その改暦日を設定しなおします。 引数を省略した場合は、Date::ITALY (1582年10月15日) になります。

new も参照してください。

next_day([n])
翌日の日付オブジェクトを返します。
next_month([n])
翌月の日付オブジェクトを返します。
next_year([n])
翌年の日付オブジェクトを返します。
nth_kday?(n, k)
その月の第NK曜日、N番目 (-5 から 5、ただし零はのぞく) の K曜日 (0-6) であれば真を返します。
prev_day([n])
前日の日付オブジェクトを返します。
prev_month([n])
前月の日付オブジェクトを返します。
prev_year([n])
前年の日付オブジェクトを返します。
rfc2822
rfc822
RFC 2822 書式の文字列を返します。
start

改暦日をあらわすユリウス日を返します。

new も参照してください。

step(limit[, step]){|date| ...}
ブロックの評価を繰り返します。ブロックは日付オブジェクトをとります。 limit は日付オブジェクトでなければなりません、 また step は非零でなければなりません。
strftime([format])

与えられた雛型で日付を書式づけます。 つぎの変換仕様をあつかいます:

%A, %a, %B, %b, %C, %c, %D, %d, %e, %F, %G, %g, %H, %h, %I, %j, %k, %L, %l, %M, %m, %N, %n, %P, %p, %Q, %R, %r, %S, %s, %T, %t, %U, %u, %V, %v, %W, %w, %X, %x, %Y, %y, %Z, %z, %%, %+

strftime(3)、および strptime も参照してください。

succ
next
翌日の日付オブジェクトを返します。
to_s
ISO 8601 書式の文字列を返します (拡大表記はつかいません)。
upto(max){|date| ...}
このメソッドは、step(max, 1){|date| ...} と等価です。
wday
曜日を返します (0-6、日曜日は零)。
yday
年の日を返します (1-366)。
year
年を返します。

DateTime

スーパークラス

Date

クラスメソッド

civil([year[, mon[, mday[, hour[, min[, sec[, offset[, start]]]]]]]])
new([year[, mon[, mday[, hour[, min[, sec[, offset[, start]]]]]]]])
暦日付に相当する日時オブジェクトを生成します。
commercial([cwyear[, cweek[, cwday[, hour[, min[, sec[, offset[, start]]]]]]]])
暦週日付に相当する日時オブジェクトを生成します。
jd([jd[, hour[, min[, sec[, offset[, start]]]]]])
ユリウス日に相当する日時オブジェクトを生成します。
now([start])
現在の時刻に相当する日時オブジェクトを生成します。
nth_kday([year[, mon[, n[, k, [, hour[, min[, sec[, offset[, start]]]]]]]]])
その月の N番目 (-5 から 5、ただし零はのぞく) の K曜日 (0-6) を返します。
ordinal([year[, yday[, hour[, min[, sec[, offset[, start]]]]]]])
年日付に相当する日時オブジェクトを生成します。

メソッド

hour
時間を返します (0-23)。
iso8601([n])
rfc3339([n])
ISO 8601 書式の文字列を返します。 省略可能な引数により、印字する秒の小数点以下の桁数を与えることができます。
jisx0301([n])
JIS X 0301 書式の文字列を返します。 省略可能な引数により、印字する秒の小数点以下の桁数を与えることができます。
min
分を返します (0-59)。
new_offset([offset])

self を複製して、その時差を設定しなおします。 引数を省略した場合は、零 (協定世界時) になります。

new も参照してください。

offset
時差を返します。
sec
秒を返します (0-59)。
zone
タイムゾーンを返します。

date/holiday - 祝祭日の判定

Date

クラスメソッド

gregorian_easter(year[, start])
easter(year[, start])
グレゴリオ暦における、その年の復活祭の日曜日を返します。
julian_easter(year[, start])
ユリウス暦における、その年の復活祭の日曜日を返します。

メソッド

easter?
復活祭の日曜日であれば真を返します。
national_holiday?

「国民の祝日に関する法律」による休日、 もしくは、いくつかの特別な休日であれば真を返します。

このメソッドは、第八次改正 「国民の祝日に関する法律の一部を改正する法律」 (平成17年5月20日号外法律43号)に対応済みです。

春分日、秋分日は前年の2月はじめの官報に掲載されるものが正しいのですが、 ここでは計算で求めています。 つまり将来については間違えることもあるかもしれません。 なお、平成21年 (2009) 分までは官報等により確認済みです。

old_national_holiday?
舊祝祭日であれば眞を返します。 此は未だ實驗的な代物で有ります。

parsedate - 日付と時刻の解析

ParseDate

モジュール関数

parsedate(str[, complete])

与えられた日付表現を解析し、見いだした要素を 配列 (年、月、日、時、分、秒、タイムゾーン、曜日) で返します。

省略できる最後の引数が真で、年が "00" から "99" の範囲であれば、 年の下2桁表現であるとみなしこれを補います。 なお、省略した場合は、偽とみなします。

parsedate はいろいろな書式をあつかえます。 たとえば、つぎのような表現を受けつけます:

Sat
Saturday
1999-08-28
21:45:09
09:45:09 PM
1999-08-28T21:45:09+0900
19990828 214509
H11.08.28T21:45:09Z
Sat Aug 28 21:45:09 1999
Sat Aug 28 21:45:09 JST 1999
Sat, 28 Aug 1999 21:45:09 -0400
Saturday, 28-Aug-99 21:45:09 GMT
08/28/1999
1999/08/28

Date::parse も参照してください。