C#日历上显示节气、阴阳历节假日信息 |
您所在的位置:网站首页 › 日历不显示24节气 › C#日历上显示节气、阴阳历节假日信息 |
近期在做一个工作日历,想在日历上设置工作日,显示请假、加班等相关信息,显示农历日期信息(包括农历日期、节日 、节气)、公历信息(节假期)。 不能不说,http://www.cnblogs.com/hocylan/archive/2007/11/16/961218.html 这篇博文对我的帮助良多。但是 我也发现了一些问题。包括几下3个点: 首先,就是"0100 除夕"这个节日并不能被显示出来,无论是对于农历12月29是一年最后一天,还是12月30是最后一天。 我的解决方法是将这条数据改为"1230 除夕",然后在获取农历节日信息的时候判断这天和下一天的农历日期的年份是否相等, 如果不等,如一个是2012,一个是2013,那么这天就是“除夕”了。 其次,在判断几月的第几周的周几为某个节日时, if (Convert.ToInt32(s[1]) == month && Convert.ToInt32(s[2]) == num && Convert.ToInt32(s[2]) == week)这句应该改成:if (Convert.ToInt32(s[1]) == month && Convert.ToInt32(s[2]) == num && Convert.ToInt32(s[3]) == week)。 博主可能疏忽了。 最后,我想在提到的这篇博文的基础上补充关于24节气的显示。 节气指二十四时节和气候,是中国古代发明的一种用来指导农事的历法。中国古代利用土圭实测日晷,将每年日影最长定为日至(又称日长至、长至、夏至),日影最短为日短至(又称短至、冬至),在春秋两季各有一天的昼夜时间长短相等,便定为春分和秋分,在商朝时只有四个节气,到了周朝时发展到了八个,直到西汉时才成为了现在的二十四节气。在史记太史公自序中就有提到阴阳、四时、八位、十二度、二十四节气的概念。 二十四节气每一个分别相应于太阳在黄道上每运动15°所到达的一定位置。二十四节气又分为12个中气和12个节气,一一相间。二十四节气反映了太阳的周年视运动,所以在公历中它们的日期是基本固定的,上半年的节气在6日,中气在21日,下半年的节气在8日,中气在23日,二者前后不差1~2日。将一回归年的长度等分成24份,从冬至开始,等间隔地依次相同安排各个中气和节气。这种方法叫做平气。由于太阳周年视运动不均匀,按太阳黄经每移行15°的节气是非等间距的,此法称为定气。定气使用于历法计算中。因为两个节气的时间长于一个朔望月(见月)的时间,所以可能出现一个月内只有一个节气或一个中气的情况。从西汉的《太初历》起,规定遇到没有中气的月份定为上月的闰月。这种置闰原则沿用至今。 二十四节气的命名反应了季节、气侯现象、气侯变化三种。反应季节的是立春、春分、立夏、夏至、立秋、秋分、立冬、冬至,又称八位; 反应气侯现象的是惊蛰、清明、小满、芒种; 反应气侯变化的有雨水、谷雨、小暑、大暑、处暑、白露、寒露、霜降、小雪、大雪、小寒、大寒。 现代人根据太阳在黄道上的位置,准确地确定了二十四节气的具体时间。节气的具体时间甚至精确到了几时几分,为了避免不同时间点显示的节气不同,我把节气的时间精确到天而已。 代码如下:/// /// 计算某一年的节气,返回节气 /// /// /// private string ComputeSolarTerm(DateTime dt) { List solar = new List(); int year = dt.Year; for (int month = 1; month < 13; month++) { for (int n = month * 2 - 1; n 14)) return (1); //Gregorian else if (y == 1582 && m == 10 && d >= 5 && d |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |