Tag: 日历格里

查找某公历年中国新年公历的算法

我正在制作一个驱动程序来计算给定时间跨度内的各种假期。 所以,我需要找到所有中国假期(中国新年,清明节,端午节等)的格里高利日。 我使用着名的“复活节算法”进行耶稣受难日,复活节星期一,耶稣升天节和惠特星期一计算; 但是,我不太了解它以适应中国历法。 我发现了类似的问题,但他们经常从格里高利到中国人: 月球/月相算法 计算python中的月球/阴阳假期 http://www.herongyang.com/year/program.html http://www.hermetic.ch/cal_stud/ch_year.htm 最后一个链接非常有用,但我仍然不确定如何以一种可以帮助我的方式实现该算法。 任何建议或代码将不胜感激! 这是我的耶稣受难日算法: private void GetGoodFridayOccurances(DateTime startDate, DateTime endDate, List observedHolidays, StandardHoliday holiday) { for (DateTime date = startDate; date 10) tA = tA – 1; //Find next sunday int tB = (tA – 19) % 7; int tC = (40 – firstTwo) % 4; if […]

.NET会在2008年12月29日给出错误的周数吗?

根据官方(格里高利)日历 ,2008年12月29日的周数为1,因为在第52周的最后一天(即28/12)之后,该年剩下三天或更少的天数。 有点奇怪,但没关系,规则是规则。 因此,根据这个日历,我们有2008/2009年的这些边界值 28/12是第52周 29/12是第1周 1/1是第1周 8/1是第2周 C#提供了一个GregorianCalendar类,它具有GetWeekOfYear(date, rule, firstDayOfWeek)函数GetWeekOfYear(date, rule, firstDayOfWeek) 。 参数rule是一个包含3个可能值的枚举: FirstDay, FirstFourWeekDay, FirstFullWeek 。 根据我的理解,我应该FirstFourWeekDay规则,但我尝试了所有这些以防万一。 最后一个参数通知哪个工作日应该被视为一周的第一天,根据该日历,它是星期一,所以它是星期一。 所以我启动了一个快速而肮脏的控制台应用程序来测试这个: using System; using System.Globalization; namespace CalendarTest { class Program { static void Main(string[] args) { var cal = new GregorianCalendar(); var firstWeekDay = DayOfWeek.Monday; var twentyEighth = new DateTime(2008, 12, 28); var twentyNinth […]