スポンサーリンク

CALENDAR(3) FreeBSD ライブラリ関数マニュアル CALENDAR(3)

名称

easterg, easterog, easteroj, gdate, jdate, ndaysg, ndaysj, week, weekday − 西暦での日付けの演算

ライブラリ

Calendar Arithmetic Library (libcalendar, −lcalendar)

書式

#include <calendar.h>

struct date *

easterg(int year, struct date *dt);

struct date *

easterog(int year, struct date *dt);

struct date *

easteroj(int year, struct date *dt);

struct date *

gdate(int nd, struct date *dt);

struct date *

jdate(int nd, struct date *dt);

int

ndaysg(struct date *dt);

int

ndaysj(struct date *dt);

int

week(int nd, int *year);

int

weekday(int nd);

解説

これらの関数は、西暦 0 年 (すなわち B.C. 1 年) 3 月 1 日から西暦 100000 年までの広範囲の年月のカレンダを演算します。

プログラムは −lcalendar とリンクさせる必要があります。

関数 easterg(), easterog() および easteroj() は、 Easter Sunday (復活祭の 日曜日) の日付けを、 dt で指定した構造体に保存し、この構造体のポインタを 返します。関数 easterg() は、グレゴリオ暦 (1582 年以降に西ヨーロッパのほ とんどのキリスト教会で採用された) を仮定し、関数 easterog() および easteroj() は、正統派 (1582 年以前の西ヨーロッパ教会、および今日まで続く ギリシャ正教会、ロシア正教会などいわゆる東方正教会) の規則に従って、 Easter Sunday の日付けを演算します。その結果、 easterog() はグレゴリオ暦( 現行太陽暦)を返し、 easteroj() はユリウス暦(旧太陽暦)を返します。

関数 gdate(), jdate(), ndaysg() および ndaysj() は、日付けの "年、月、日" という一般表記と、より演算に適した "日数" 表現の相互変換を行います。 B.C. 1 年 3 月 1 日を 0 として、以降の経過日に順番に番号が振られます。すなわち この日番号は、 B.C. 1 年 3 月 1 日からその日までの経過日数を示します。変 換は、正数の日番号に対してだけ機能します。

gdate() および jdate() 関数は、日番号 nd に対応する日付けを dt で指定した 構造体に保存し、その構造体のポインタを返します。

ndaysg() および ndaysj() 関数は、 dt で指定した日付けの日番号を返します。

gdate() および ndaysg() 関数は、1582 年 10 月 4 日以降のグレゴリオ暦およ び、以前のユリウス暦を仮定しますが、一方、 jdate() および ndaysj() は一貫 してユリウス暦だけを仮定します。

これら 2 つの暦ではうるう年の定義が違います。ユリウス暦では 4 の倍数の年 はすべてうるう年ですが、グレゴリオ暦ではそのうちの 100 の倍数で、400 の 倍数ではない年を除きます。すなわち、1700, 1800, 1900, 2100 年はうるう年で はなく、 2000 年はうるう年になります。この新たな規則は、1582 年 10 月 4 日に、同日以降の 10 日を削除することで開始されました。カトリック国家のほ とんどは、 16 世紀末までにこの新暦を採用しましたが、一方、20 世紀までなお ユリウス暦にとどまる国々もありました。英国とその植民地が新暦に切り替えた のは、1752 年 9 月 2 日でしたが、その時点ではすでに 11 日を削除する必要が ありました。

関数 week() は、 nd で指定された日番号の日付けが含まれる週番号を返しま す。引数 *year は、その週 (の半分以上) が含まれる年に設定されます。週番号 は、各年の 3 日以上が含まれる第 1 週を 1 として、順番に振られます。週は月 曜日から始まります。この関数はグレゴリオ暦だけに定義されます。

関数 weekday() は、 nd で指定された日番号の日付けの曜日 (月曜 = 0 日曜 = 6) を返します。

構造体 date は ⟨calendar.h⟩ 内で定義されています。次のフィールドを含みま す。

int y;

/∗ year (0000 - ????) ∗/
int m;

/∗ month (1 - 12) ∗/
int d;

/∗ day of month (1 - 31) ∗/

0 年は歴史家の手では "1 B.C." と書かれますが、天文学者とこのライブラリで は "0" と表記されます。

関連項目

ncal(1), strftime(3)

規格

週番号は ISO 8601: 1988 に適合しています。

歴史

calendar ライブラリは FreeBSD 3.0 ではじめて登場しました。

作者

このマニュアルページとライブラリは、 Wolfgang Helbig ⟨helbig@FreeBSD.org⟩ によって書かれました。

バグ

このライブラリはきわめて慎重にコーディングされたので、残されたバグはあり ません。

FreeBSD 10.0 November 29, 1997 FreeBSD 10.0

スポンサーリンク