C/400 での曜日を求める方法を紹介する。
C言語では時間に関する関数が time.h
によって
豊富に紹介されているので次のようなソースによって
求めることができる。
RPG ではまた別の方法が必要となるので
RPG による曜日の算出方法は「275. RPGで曜日を算出するには ?」を
参照して頂きたい。
0001.00 #include0002.00 #include 0003.00 #include 0004.00 #include 0005.00 0006.00 #define TRUE 0 0007.00 #define FALSE -1 0008.00 0009.00 int GetDayOfWeek(int year, int month, int day); 0010.00 void DisplayWeek(int wday); 0011.00 void main(void){ 0012.00 int year, month, day, week; 0013.00 0014.00 printf("** TESTWEEK : 曜日を求める **\n"); 0015.00 getchar(); 0016.00 0017.00 year = 2017; 0018.00 month = 04; 0019.00 day = 1; 0020.00 week = GetDayOfWeek(year, month, day); 0021.00 0022.00 /* 曜日の表示 */ 0023.00 DisplayWeek(week); 0024.00 } 0025.00 /*********************************************/ 0026.00 int GetDayOfWeek(int year, int month, int day) 0027.00 /*********************************************/ 0028.00 { 0029.00 struct tm time_in, *local; 0030.00 time_t t; 0031.00 0032.00 /* 年月日を入力 */ 0033.00 time_in.tm_year = year - 1900; /* 年 */ 0034.00 time_in.tm_mon = month - 1; /* 月 */ 0035.00 time_in.tm_mday = day; /* 日 */ 0036.00 0037.00 /* 時分秒曜日を適当に入力 */ 0038.00 time_in.tm_hour = 1; /* 時 ( 適当に入力 ) */ 0039.00 time_in.tm_min = 0; /* 分 ( 適当に入力 ) */ 0040.00 time_in.tm_sec = 0; /* 秒 ( 適当に入力 ) */ 0041.00 time_in.tm_wday = 0; /* 曜日 ( 適当に入力 ) */ 0042.00 time_in.tm_yday = 0; /* 1 月 1 日からの日数 ( 適当に入力 ) */ 0043.00 0044.00 /* mktime 関数で変換 */ 0045.00 if((t = mktime(&time_in) ) == (time_t)(-1) ) { 0046.00 return -1; 0047.00 } 0048.00 0049.00 /* 地方時に変換 */ 0050.00 local = localtime(&t); 0051.00 0052.00 return local->tm_wday; 0053.00 } 0054.00 /*************************/ 0055.00 void DisplayWeek(int wday) 0056.00 /*************************/ 0057.00 { 0058.00 char weeks[][16] = { 0059.00 " 日曜日 ", 0060.00 " 月曜日 ", 0061.00 " 火曜日 ", 0062.00 " 水曜日 ", 0063.00 " 木曜日 ", 0064.00 " 金曜日 ", 0065.00 " 土曜日 " 0066.00 }; 0067.00 0068.00 printf("%s\n", weeks[wday]); 0069.00 }
この例では 2017/04/01
の曜日を求めている。
2017/04/01
はこの原稿を書いている日であり土曜日
である。