计算节气-查表法

单片机存储有限,需要进行精简

如果把每一年的 节气的日期值依次排序得到一个hashcode

如:

某一年,小寒是01月06日 大寒是01月20日 立春是......

则hashcode为

010601200204021903060321040504200506052106060622070707230808082309080923100910241108112312071222

根据几百年的数据分析,hashcode是很少的几个,仅仅50个,一个char类型就可以放某年的24节气数据

于是代码如下(以下代码虽然很长,但可以通过最下面的代码生成这段代码

(已遍历1970-2100的每一天,对比验证以下计算代码正确)

//1970年至2100年的 节气类型表
static int[] JIEQI_TABLE = {
	0,1,2,3,0,4,5,6,7,8,5,
	6,9,10,11,12,13,14,15,16,17,0,15,18,19,0,15,20,19,0,15,20,19,0,15,20,6,0,21,22,6,
	7,23,24,6,9,25,26,12,17,27,28,16,17,29,28,20,19,29,28,20,19,29,28,20,6,29,28,20,6,29,
	30,22,6,31,32,24,6,33,34,26,16,35,34,26,36,35,37,28,36,38,37,28,20,38,37,28,20,39,37,30,
	20,39,40,30,24,39,40,41,24,39,42,43,26,44,45,34,26,46,45,37,28,46,47,37,28,48,49,37,28,20,
};
//小寒->冬至 对应 1->24 | 无节气返回0
public static int GetJieqi(int y, int m, int d)
{
	int code = JIEQI_TABLE[y - YEAR_START];
	int md = m * 100 + d;

	switch (m)
	{
		case 1:
			switch (code)
			{
				case 0:
				case 1:
				case 2:
				case 4:
				case 5:
				case 7:
				case 8:
				case 9:
				case 10:
				case 11:
				case 14:
				case 15:
				case 21:
				case 23:
				case 25:
				case 27:
				case 29:
				case 31:
				case 33:
					if (md == 106) return 1;
					break;
				case 3:
				case 6:
				case 12:
				case 13:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 22:
				case 24:
				case 26:
				case 28:
				case 30:
				case 32:
				case 34:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 46:
				case 48:
					if (md == 105) return 1;
					break;
				case 45:
				case 47:
				case 49:
					if (md == 104) return 1;
					break;
			}
			switch (code)
			{
				case 0:
				case 3:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 12:
				case 13:
				case 14:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 22:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 35:
				case 36:
				case 38:
				case 39:
				case 41:
				case 43:
				case 44:
				case 46:
				case 48:
					if (md == 120) return 2;
					break;
				case 1:
				case 2:
				case 4:
				case 5:
				case 11:
				case 15:
				case 21:
				case 23:
					if (md == 121) return 2;
					break;
				case 34:
				case 37:
				case 40:
				case 42:
				case 45:
				case 47:
				case 49:
					if (md == 119) return 2;
					break;
			}
			break;
		case 2:
			switch (code)
			{
				case 0:
				case 1:
				case 3:
				case 4:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 11:
				case 12:
				case 13:
				case 14:
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 27:
				case 29:
				case 31:
				case 33:
				case 35:
				case 36:
				case 38:
				case 39:
				case 44:
				case 46:
				case 48:
					if (md == 204) return 3;
					break;
				case 2:
				case 5:
					if (md == 205) return 3;
					break;
				case 26:
				case 28:
				case 30:
				case 32:
				case 34:
				case 37:
				case 40:
				case 41:
				case 42:
				case 43:
				case 45:
				case 47:
				case 49:
					if (md == 203) return 3;
					break;
			}
			switch (code)
			{
				case 0:
				case 1:
				case 2:
				case 3:
				case 4:
				case 5:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 11:
				case 12:
				case 13:
				case 14:
				case 15:
				case 16:
				case 17:
				case 19:
				case 21:
				case 23:
				case 25:
				case 27:
				case 29:
				case 31:
				case 33:
				case 35:
				case 36:
				case 38:
				case 39:
				case 44:
				case 46:
					if (md == 219) return 4;
					break;
				case 18:
				case 20:
				case 22:
				case 24:
				case 26:
				case 28:
				case 30:
				case 32:
				case 34:
				case 37:
				case 40:
				case 41:
				case 42:
				case 43:
				case 45:
				case 47:
				case 48:
				case 49:
					if (md == 218) return 4;
					break;
			}
			break;
		case 3:
			switch (code)
			{
				case 0:
				case 1:
				case 3:
				case 4:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 13:
				case 14:
				case 17:
				case 19:
					if (md == 306) return 5;
					break;
				case 2:
				case 5:
				case 11:
				case 12:
				case 15:
				case 16:
				case 18:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 45:
				case 47:
				case 49:
					if (md == 305) return 5;
					break;
				case 44:
				case 46:
				case 48:
					if (md == 304) return 5;
					break;
			}
			switch (code)
			{
				case 0:
				case 1:
				case 3:
				case 4:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 12:
				case 13:
				case 14:
				case 17:
				case 19:
					if (md == 321) return 6;
					break;
				case 2:
				case 5:
				case 11:
				case 15:
				case 16:
				case 18:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 45:
				case 47:
				case 49:
					if (md == 320) return 6;
					break;
				case 44:
				case 46:
				case 48:
					if (md == 319) return 6;
					break;
			}
			break;
		case 4:
			switch (code)
			{
				case 0:
				case 1:
				case 2:
				case 3:
				case 4:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 12:
				case 13:
				case 14:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 36:
					if (md == 405) return 7;
					break;
				case 5:
				case 11:
				case 15:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 404) return 7;
					break;
			}
			switch (code)
			{
				case 0:
				case 2:
				case 3:
				case 5:
				case 6:
				case 7:
				case 9:
				case 10:
				case 11:
				case 12:
				case 13:
				case 14:
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 26:
				case 28:
				case 30:
				case 36:
					if (md == 420) return 8;
					break;
				case 1:
				case 4:
				case 8:
					if (md == 421) return 8;
					break;
				case 25:
				case 27:
				case 29:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 419) return 8;
					break;
			}
			break;
		case 5:
			switch (code)
			{
				case 0:
				case 1:
				case 4:
				case 7:
				case 8:
				case 9:
				case 10:
				case 13:
				case 14:
				case 17:
				case 19:
					if (md == 506) return 9;
					break;
				case 2:
				case 3:
				case 5:
				case 6:
				case 11:
				case 12:
				case 15:
				case 16:
				case 18:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 36:
				case 37:
				case 38:
				case 40:
				case 41:
				case 42:
				case 43:
				case 45:
				case 47:
				case 49:
					if (md == 505) return 9;
					break;
				case 39:
				case 44:
				case 46:
				case 48:
					if (md == 504) return 9;
					break;
			}
			switch (code)
			{
				case 0:
				case 2:
				case 3:
				case 5:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 11:
				case 12:
				case 13:
				case 14:
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 24:
				case 26:
				case 28:
				case 36:
					if (md == 521) return 10;
					break;
				case 1:
				case 4:
					if (md == 522) return 10;
					break;
				case 23:
				case 25:
				case 27:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 520) return 10;
					break;
			}
			break;
		case 6:
			switch (code)
			{
				case 0:
				case 1:
				case 3:
				case 4:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 12:
				case 13:
				case 14:
				case 16:
				case 17:
				case 18:
				case 19:
					if (md == 606) return 11;
					break;
				case 2:
				case 5:
				case 11:
				case 15:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 47:
				case 49:
					if (md == 605) return 11;
					break;
				case 46:
				case 48:
					if (md == 604) return 11;
					break;
			}
			switch (code)
			{
				case 0:
				case 1:
				case 4:
				case 7:
				case 8:
				case 9:
				case 10:
				case 13:
				case 14:
					if (md == 622) return 12;
					break;
				case 2:
				case 3:
				case 5:
				case 6:
				case 11:
				case 12:
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 34:
				case 36:
				case 37:
				case 40:
				case 41:
				case 43:
					if (md == 621) return 12;
					break;
				case 33:
				case 35:
				case 38:
				case 39:
				case 42:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 620) return 12;
					break;
			}
			break;
		case 7:
			switch (code)
			{
				case 0:
				case 2:
				case 3:
				case 5:
				case 6:
				case 7:
				case 9:
				case 11:
				case 12:
				case 13:
				case 14:
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 28:
				case 30:
				case 32:
				case 36:
					if (md == 707) return 13;
					break;
				case 1:
				case 4:
				case 8:
				case 10:
					if (md == 708) return 13;
					break;
				case 27:
				case 29:
				case 31:
				case 33:
				case 34:
				case 35:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 706) return 13;
					break;
			}
			switch (code)
			{
				case 0:
				case 1:
				case 2:
				case 3:
				case 4:
				case 5:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 12:
				case 13:
				case 14:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 22:
				case 36:
					if (md == 723) return 14;
					break;
				case 11:
				case 15:
				case 21:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 722) return 14;
					break;
			}
			break;
		case 8:
			switch (code)
			{
				case 0:
				case 1:
				case 3:
				case 4:
				case 7:
				case 8:
				case 9:
				case 10:
				case 13:
				case 14:
				case 17:
				case 19:
					if (md == 808) return 15;
					break;
				case 2:
				case 5:
				case 6:
				case 11:
				case 12:
				case 15:
				case 16:
				case 18:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 36:
				case 37:
				case 38:
				case 40:
				case 41:
				case 42:
				case 43:
				case 45:
				case 47:
					if (md == 807) return 15;
					break;
				case 39:
				case 44:
				case 46:
				case 48:
				case 49:
					if (md == 806) return 15;
					break;
			}
			switch (code)
			{
				case 0:
				case 2:
				case 3:
				case 5:
				case 6:
				case 7:
				case 9:
				case 11:
				case 12:
				case 13:
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 28:
				case 30:
				case 32:
				case 36:
				case 41:
					if (md == 823) return 16;
					break;
				case 1:
				case 4:
				case 8:
				case 10:
				case 14:
					if (md == 824) return 16;
					break;
				case 27:
				case 29:
				case 31:
				case 33:
				case 34:
				case 35:
				case 37:
				case 38:
				case 39:
				case 40:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 822) return 16;
					break;
			}
			break;
		case 9:
			switch (code)
			{
				case 0:
				case 1:
				case 3:
				case 4:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 12:
				case 13:
				case 14:
				case 17:
				case 19:
					if (md == 908) return 17;
					break;
				case 2:
				case 5:
				case 11:
				case 15:
				case 16:
				case 18:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 45:
				case 47:
				case 49:
					if (md == 907) return 17;
					break;
				case 44:
				case 46:
				case 48:
					if (md == 906) return 17;
					break;
			}
			switch (code)
			{
				case 0:
				case 2:
				case 3:
				case 4:
				case 5:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 11:
				case 12:
				case 13:
				case 14:
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 22:
				case 24:
				case 26:
				case 28:
				case 36:
					if (md == 923) return 18;
					break;
				case 1:
					if (md == 924) return 18;
					break;
				case 21:
				case 23:
				case 25:
				case 27:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 922) return 18;
					break;
			}
			break;
		case 10:
			switch (code)
			{
				case 0:
				case 1:
				case 4:
				case 8:
				case 10:
				case 14:
					if (md == 1009) return 19;
					break;
				case 2:
				case 3:
				case 5:
				case 6:
				case 7:
				case 9:
				case 11:
				case 12:
				case 13:
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 32:
				case 34:
				case 36:
				case 37:
				case 41:
				case 43:
					if (md == 1008) return 19;
					break;
				case 31:
				case 33:
				case 35:
				case 38:
				case 39:
				case 40:
				case 42:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 1007) return 19;
					break;
			}
			switch (code)
			{
				case 0:
				case 1:
				case 4:
				case 7:
				case 8:
				case 9:
				case 10:
				case 13:
				case 14:
				case 17:
					if (md == 1024) return 20;
					break;
				case 2:
				case 3:
				case 5:
				case 6:
				case 11:
				case 12:
				case 15:
				case 16:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 36:
				case 37:
				case 40:
				case 41:
				case 42:
				case 43:
				case 45:
					if (md == 1023) return 20;
					break;
				case 38:
				case 39:
				case 44:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 1022) return 20;
					break;
			}
			break;
		case 11:
			switch (code)
			{
				case 0:
				case 1:
				case 4:
				case 7:
				case 8:
				case 9:
				case 10:
				case 13:
				case 14:
				case 17:
					if (md == 1108) return 21;
					break;
				case 2:
				case 3:
				case 5:
				case 6:
				case 11:
				case 12:
				case 15:
				case 16:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 36:
				case 37:
				case 40:
				case 41:
				case 42:
				case 43:
				case 45:
					if (md == 1107) return 21;
					break;
				case 38:
				case 39:
				case 44:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 1106) return 21;
					break;
			}
			switch (code)
			{
				case 0:
				case 1:
				case 4:
				case 7:
				case 8:
				case 10:
				case 14:
					if (md == 1123) return 22;
					break;
				case 2:
				case 3:
				case 5:
				case 6:
				case 9:
				case 11:
				case 12:
				case 13:
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 34:
				case 36:
				case 37:
				case 40:
				case 41:
				case 43:
					if (md == 1122) return 22;
					break;
				case 33:
				case 35:
				case 38:
				case 39:
				case 42:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 1121) return 22;
					break;
			}
			break;
		case 12:
			switch (code)
			{
				case 0:
				case 2:
				case 3:
				case 5:
				case 6:
				case 7:
				case 9:
				case 11:
				case 12:
				case 13:
				case 14:
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 30:
				case 32:
				case 34:
				case 36:
				case 41:
				case 43:
					if (md == 1207) return 23;
					break;
				case 1:
				case 4:
				case 8:
				case 10:
					if (md == 1208) return 23;
					break;
				case 29:
				case 31:
				case 33:
				case 35:
				case 37:
				case 38:
				case 39:
				case 40:
				case 42:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 1206) return 23;
					break;
			}
			switch (code)
			{
				case 0:
				case 1:
				case 2:
				case 3:
				case 4:
				case 5:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 11:
				case 12:
				case 13:
				case 14:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 22:
				case 24:
				case 26:
				case 36:
					if (md == 1222) return 24;
					break;
				case 15:
				case 21:
				case 23:
				case 25:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 34:
				case 35:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
					if (md == 1221) return 24;
					break;
			}
			break;
	}
	return 0;
}

用c#生成这段代码

调用CreateCode()生成以上代码

public class JieqiItem
{
	//小寒->冬至 24节气的 月日值(月*100+日)
	public int[] list = new int[24];
	public string hashCode = "";//例:01040119....   表示:小寒是1月4日 大寒是1月19日 立春是......
}

static int YEAR_START = 1970;
static int YEAR_END = 2100;
static List<JieqiItem> jieqiList = new List<JieqiItem>();
static Dictionary<string, int> jieqiDict = new Dictionary<string, int>();

//QueryJieqi函数可以通过数据库或天文计算获得,其中内容仅做参考
static JieqiItem QueryJieqi(int year)
{
	Nongli info = new Nongli();

	JieqiItem jieqiItem = new JieqiItem();
	for (int i = 0; i < 24; i++)
	{
		MySql.Query(info, year,i);
		jieqiItem.hashCode += info.GetDateStr();
		jieqiItem.list[i] = info.GetDateInt();
	}

	return jieqiItem;
}

static void Init()
{
	if (jieqiList.Count > 0)
		return;

	for (int y = YEAR_START; y <= YEAR_END; y++)
	{
		JieqiItem jieqiItem = QueryJieqi(y);
		if (!jieqiDict.ContainsKey(jieqiItem.hashCode))
		{
			jieqiDict[jieqiItem.hashCode] = jieqiList.Count;
			jieqiList.Add(jieqiItem);
		}
	}
}

public static string CreateCode()
{
	Init();

	StringBuilder sb = new StringBuilder();
	sb.AppendLine($"//{YEAR_START}年至{YEAR_END}年的 节气类型表");
	sb.AppendLine("static int[] JIEQI_TABLE = {");
	for (int y = YEAR_START; y <= YEAR_END; y++)
	{
		JieqiItem jieqiItem = QueryJieqi(y);
		sb.Append($"{jieqiDict[jieqiItem.hashCode]},");
		if (y % 30 == 0) sb.AppendLine("");
	}
	sb.AppendLine("};");

	sb.AppendLine("//小寒->冬至 对应 1->24 无节气返回0");
	sb.AppendLine("public static int GetJieqi(int y, int m, int d)\r\n{");
	sb.AppendLine("int code = JIEQI_TABLE[y - YEAR_START];");
	sb.AppendLine("int md = m * 100 + d;");
	sb.AppendLine("");
	sb.AppendLine("switch (m)\r\n{");

	for (int m = 0; m < 12; m++)
	{
		sb.AppendLine($"case {m + 1}:");

		for (int k = 0; k < 2; k++)
		{
			sb.AppendLine("switch (code)\r\n{");
			#region switch (code)

			List<int> listx = new List<int>();
			for (int i = 0; i < jieqiList.Count; i++)
			{
				if (!listx.Contains(jieqiList[i].list[m * 2 + k]))
					listx.Add(jieqiList[i].list[m * 2 + k]);
			}

			foreach (int item in listx)
			{
				for (int i = 0; i < jieqiList.Count; i++)
				{
					if (jieqiList[i].list[m * 2 + k] == item)
					{
						sb.AppendLine($"case {i}:");
					}
				}
				sb.AppendLine($"if (md == {item}) return {(m * 2 + k) + 1};");
				sb.AppendLine("break;");
			}

			#endregion
			sb.AppendLine("}");
		}

		sb.AppendLine("break;");
	}
	sb.AppendLine("}");
	sb.AppendLine("return 0;");
	sb.AppendLine("}");

	return sb.ToString();
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值