我试着计算一年中国的“中秋节”公众假期。但是这几年的日期无效,我使用wikipedia的文件(第8个月的第15天)
var chineseCalendar = new ChineseLunisolarCalendar();
var midAutumnFestival = chineseCalendar.ToDateTime(year, 8, 15, 0, 0, 0, 0);
2017年和2020年的日期无效,出了什么问题?
Calculated Date | Correct Date
2020.09.02 | 2020.10.01
2017.09.05 | 2017.10.04
答案 0 :(得分:3)
2017年和2020年有闰月。
https://www.chinesegenderchart.info/leapmonth.php
2017年第6个月跳跃
2020年第四个月闰
闰月可以在一年中的任何一个月之后发生。例如, GetMonth方法返回1到13之间的数字,表示 与指定日期关联的月份。如果有闰月 在一年的第八和第九个月之间,GetMonth方法 第八个月返回8,第八个月返回9个,第10个月返回 第九个月。
根据以上文档,当您在2017年和2020年查询第8个月时,您必须要求9个月代表第8个月。
如下所示:
var chineseCalendar = new ChineseLunisolarCalendar();
var midAutumnFestival = chineseCalendar.ToDateTime(year, 9, 15, 0, 0, 0, 0);