上海怎么卖牌照上海怎么卖车牌
83
2024-11-19
发现2月23日这天现了一个“冬八九”,没明白是什么意思。
百度了下,原来小时候背的“数九歌”里提到过:
一九二九不出手;
三九四九冰上走;
五九六九沿河看柳;
七九河开八九雁来;
九九加一九,耕牛遍地走。
过了这么些年,“数九歌”也就只记得前两句了。
话说回来,到底从哪天开始数九呢?
我往前翻了翻日历,找到“冬二九”,再从“冬二九”往前数九天,日历上显示的是“冬至”。
估摸着是从冬至算起。
但我听到了另外的答案:“
夏至三庚入伏,冬至逢壬数九。”
“冬至逢壬”,意思是冬至过后的第一个壬日开始数九。
什么是“壬日”呢?指的是:
古代的“干支纪日法”中带有“壬”字头的那一天。
到这儿就得跳转到“干支纪日法”词条中了。
分开来解决,首先“干支”指的是:天干和地支
天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸
地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥
再往下看如何纪日的?
出现了“1.高氏日柱公式”和“2.日干支推算表”。
一看到公式,想要偷个懒,于是直接跳到了“日干支推算表”。
确实不算难,但是要记一下年数表和月数表:
年数表
月数表
计算起来也很简单:
日干支序数=年数+月数+日期
(和大于60,则减60。1月、2月用上一年的年数)
得到这个日干支序数后,再对应干支表,就能得到最终的日干支了。
干支表
比如:
计算1986年7月18日干支:
查表得知,1986年数=40,7月数=2,那么,
1986年7月18日=1986年数+7月数+18日=40+2+18=60=癸亥
2015年1月7日干支(1月、2月用上一年的年数):
2015年1月7日=2014年数+1月数+7日=7+6+7=20=癸未
嗯,算是好算,就是要对照的表有点多,还是交给计算机试试吧。
先用C#做了一个,代码简单粗暴,毫无优化痕迹:
public static string getganzhi(int year,int month,int day)
{
Dictionary
jiazi.Add(01, "甲子");
jiazi.Add(11, "甲戌");
jiazi.Add(21, "甲申");
jiazi.Add(31, "甲午");
jiazi.Add(41, "甲辰");
jiazi.Add(51, "甲寅");
jiazi.Add(02, "乙丑");
jiazi.Add(12, "乙亥");
jiazi.Add(22, "乙酉");
jiazi.Add(32, "乙未");
jiazi.Add(42, "乙巳");
jiazi.Add(52, "乙卯");
jiazi.Add(03, "丙寅");
jiazi.Add(13, "丙子");
jiazi.Add(23, "丙戌");
jiazi.Add(33, "丙申");
jiazi.Add(43, "丙午");
jiazi.Add(53, "丙辰");
jiazi.Add(04, "丁卯");
jiazi.Add(14, "丁丑");
jiazi.Add(24, "丁亥");
jiazi.Add(34, "丁酉");
jiazi.Add(44, "丁未");
jiazi.Add(54, "丁巳");
jiazi.Add(05, "戊辰");
jiazi.Add(15, "戊寅");
jiazi.Add(25, "戊子");
jiazi.Add(35, "戊戌");
jiazi.Add(45, "戊申");
jiazi.Add(55, "戊午");
jiazi.Add(06, "己巳");
jiazi.Add(16, "己卯");
jiazi.Add(26, "己丑");
jiazi.Add(36, "己亥");
jiazi.Add(46, "己酉");
jiazi.Add(56, "己未");
jiazi.Add(07, "庚午");
jiazi.Add(17, "庚辰");
jiazi.Add(27, "庚寅");
jiazi.Add(37, "庚子");
jiazi.Add(47, "庚戌");
jiazi.Add(57, "庚申");
jiazi.Add(08, "辛未");
jiazi.Add(18, "辛巳");
jiazi.Add(28, "辛卯");
jiazi.Add(38, "辛丑");
jiazi.Add(48, "辛亥");
jiazi.Add(58, "辛酉");
jiazi.Add(09, "壬申");
jiazi.Add(19, "壬午");
jiazi.Add(29, "壬辰");
jiazi.Add(39, "壬寅");
jiazi.Add(49, "壬子");
jiazi.Add(59, "壬戌");
jiazi.Add(10, "癸酉");
jiazi.Add(20, "癸未");
jiazi.Add(30, "癸巳");
jiazi.Add(40, "癸卯");
jiazi.Add(50, "癸丑");
jiazi.Add(60, "癸亥");
Dictionary
nianshu.Add(1950, 31);
nianshu.Add(1960, 24);
nianshu.Add(1970, 16);
nianshu.Add(1980, 9);
nianshu.Add(1990, 1);
nianshu.Add(1951, 36);
nianshu.Add(1961, 29);
nianshu.Add(1971, 21);
nianshu.Add(1981, 14);
nianshu.Add(1991, 6);
nianshu.Add(1952, 42);
nianshu.Add(1962, 34);
nianshu.Add(1972, 27);
nianshu.Add(1982, 19);
nianshu.Add(1992, 12);
nianshu.Add(1953, 47);
nianshu.Add(1963, 39);
nianshu.Add(1973, 32);
nianshu.Add(1983, 24);
nianshu.Add(1993, 17);
nianshu.Add(1954, 52);
nianshu.Add(1964, 45);
nianshu.Add(1974, 37);
nianshu.Add(1984, 30);
nianshu.Add(1994, 22);
nianshu.Add(1955, 57);
nianshu.Add(1965, 50);
nianshu.Add(1975, 42);
nianshu.Add(1985, 35);
nianshu.Add(1995, 27);
nianshu.Add(1956, 3);
nianshu.Add(1966, 55);
nianshu.Add(1976, 48);
nianshu.Add(1986, 40);
nianshu.Add(1996, 33);
nianshu.Add(1957, 8);
nianshu.Add(1967, 0);
nianshu.Add(1977, 53);
nianshu.Add(1987, 45);
nianshu.Add(1997, 38);
nianshu.Add(1958, 13);
nianshu.Add(1968, 6);
nianshu.Add(1978, 58);
nianshu.Add(1988, 51);
nianshu.Add(1998, 43);
nianshu.Add(1959, 18);
nianshu.Add(1969, 11);
nianshu.Add(1979, 3);
nianshu.Add(1989, 56);
nianshu.Add(1999, 48);
nianshu.Add(2000, 54);
nianshu.Add(2010, 46);
nianshu.Add(2020, 39);
nianshu.Add(2030, 31);
nianshu.Add(2040, 24);
nianshu.Add(2001, 59);
nianshu.Add(2011, 51);
nianshu.Add(2021, 44);
nianshu.Add(2031, 36);
nianshu.Add(2041, 29);
nianshu.Add(2002, 4);
nianshu.Add(2012, 57);
nianshu.Add(2022, 49);
nianshu.Add(2032, 42);
nianshu.Add(2042, 34);
nianshu.Add(2003, 9);
nianshu.Add(2013, 2);
nianshu.Add(2023, 54);
nianshu.Add(2033, 47);
nianshu.Add(2043, 39);
nianshu.Add(2004, 15);
nianshu.Add(2014, 7);
nianshu.Add(2024, 0);
nianshu.Add(2034, 52);
nianshu.Add(2044, 45);
nianshu.Add(2005, 20);
nianshu.Add(2015, 12);
nianshu.Add(2025, 5);
nianshu.Add(2035, 57);
nianshu.Add(2045, 50);
nianshu.Add(2006, 25);
nianshu.Add(2016, 18);
nianshu.Add(2026, 10);
nianshu.Add(2036, 3);
nianshu.Add(2046, 55);
nianshu.Add(2007, 30);
nianshu.Add(2017, 23);
nianshu.Add(2027, 15);
nianshu.Add(2037, 8);
nianshu.Add(2047, 0);
nianshu.Add(2008, 36);
nianshu.Add(2018, 28);
nianshu.Add(2028, 21);
nianshu.Add(2038, 13);
nianshu.Add(2048, 6);
nianshu.Add(2009, 41);
nianshu.Add(2019, 33);
nianshu.Add(2029, 26);
nianshu.Add(2039, 18);
nianshu.Add(2049, 11);
Dictionary
yueshu.Add(1, 6);
yueshu.Add(2, 37);
yueshu.Add(3, 0);
yueshu.Add(4, 31);
yueshu.Add(5, 1);
yueshu.Add(6, 32);
yueshu.Add(7, 2);
yueshu.Add(8, 33);
yueshu.Add(9, 4);
yueshu.Add(10, 34);
yueshu.Add(11, 5);
yueshu.Add(12, 35);
int ganzhishu = -1;
if (month > 3)
{
ganzhishu = nianshu[year] + yueshu[month] + day;
}
else {
ganzhishu = nianshu[year - 1] + yueshu[month] + day;
}
if (ganzhishu > 60) {
ganzhishu = ganzhishu - 60;
}
return jiazi[ganzhishu];
}
再回到“数九”的问题上来,如果严格按照“壬日”的方式来定“一九”应该从哪天起算呢?
去年的冬至在12月22日,从这天开始往后找,发现到12月25日是壬子日,那就要这天开始“数九”,2023年1月3日就是“冬二九”,以此类推,2023年2月26日才是“冬八九”。