|
年月日を数値で入力し、曜日番号(日0、月1、火2、水3、木4、金5、土6、その他7)を返すマクロ、関数を作る。
マクロ: 関数:
//*********************************************************
// GetDayOfWeek()
// 指定された 年月日 が 何曜日 かを求める。
// 何曜日かを示す 曜日番号 を返す。
// [0 = 日, 1 = 月, 2 = 火, 3 = 水, 4 = 木, 5 = 金, 6 = 土]
//
// int year
// 年 を 西暦 で与える。
//
// int month
// 月 を 1 〜 12 の範囲で指定する。
//
// int day
// 日 を 1 〜 31 の範囲で指定する。
//
//*********************************************************
int // 曜日番号 0-6
GetDayOfWeek
(
int year, // 年 西暦
int month, // 月 1-12
int day // 日 1-31
)
{
// 1月 と 2月 を前年の 13月 と 14月 として扱う
if ( month <= 2 )
{
year -= 1;
month += 12;
}
// 曜日番号を返す
return
(
day
+
((8 + (13 * month)) / 5)
+
(year + (year / 4) - (year / 100) + (year / 400))
)
%
7;
}//GetDayOfWeek
もし、ライブラリの関数mktime() を使用して日付から曜日を求めるならば、次のようである。 //*********************************************************
// mktime関数 を使用して日付から曜日を求める。
// 曜日番号(日0、月1、火2、水3、木4、金5、土6、その他7)を返す
//*********************************************************
int DayOfWeek( int Year, int Month, int Day )
{
struct tm when;
when.tm_year = Year - 1900;
when.tm_mon = Month - 1;
when.tm_mday = Day;
when.tm_hour = 0;
when.tm_min = 0;
when.tm_sec = 0;
when.tm_isdst = -1;
if ( mktime( &when ) == (time_t)-1 )
{
return 7; // 計算失敗
}
return when.tm_wday;
}//DayOfWeek
関連
・指定の年が閏年かどうか判定する |
|
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp

同人ダウンロード販売|DL.Getchu.com