[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
这个算法肯定有问题,考虑了闰年、闰月了吗?我随便拿我的生日算了一下,就差一天:
在公历(格里历)纪年中,有闰日的年份叫闰年,一般年份365天,闰年为366天。由于地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年,公历把一年定为365天。所余下的时间约为四年累计一天,加在二月里,所以平常年份每年365天,二月为28天,闰年为366天,二月为29天。因此,每400年中有97个闰年,闰年在2月末增加一天,闰年366天。 闰年的计算方法:公元纪年的年数可以被四整除,即为闰年;被100整除而不能被400整除为平年;被100整除也可被400整除的为闰年。如2000年是闰年,而1900年不是。
    下面是一个计算公历闰年的例子:
     s = InputBox("请输入年份:")
     n = Val(s)
     If n Mod 400 = 0 Or (n Mod 4 = 0 And n Mod 100 <> 0) Then
     MsgBox s + "是闰年!"
     End If
中国旧历农历纪年中,有闰月的一年称为闰年。一般年份为12个月,354或355天,闰年则为13个月,383或384天。农历作为阴阳历的一种,每月的天数依照月亏而定,一年的时间以12个月为基准;为了合上地球围绕太阳运行周期即回归年,每隔2到4年,增加一个月,增加的这个月为闰月,因此农历的闰年为13个月。
    农历没有第十三月的称谓,闰月按照历法规则,排放在从二月到十月的过后重复同一个月,重复的这个月为闰月,如四月过后的闰月称为闰四月。
    农历闰年闰月的推算,3年一闰,5年二闰,19年七闰;农历基本上19年为一周期对应于公历同一时间。如公历的2001年5月27日、1982年5月27日和1963年5月27日这个日子,都是闰四月初五。
闰月加到哪个月,以农历历法规则推断,主要依照与农历的二十四节气相符合来确定;
农历的闰月天数与正常月份天数一样,为29或30天。
农历所谓“闰”的说法,只有闰年和闰月称谓,公历也有闰年的称谓。
公历1982年至2042年与农历闰年闰月对照表
    公历所在月份 闰月(初一日) 干支年
    1982年5月23日 闰四月小 壬戊年
    1984年11月23日 闰十月大 甲子年
    1987年7月26日 闰六月大 丁卯年
    1990年6月23日 闰五月大 庚午年
    1993年4月22日 闰三月大 癸酉年
    1995年9月25日 闰八月大 乙亥年
    1998年6月24日 闰五月小 戊寅年
    2001年5月23日 闰四月大 辛巳年
    2004年3月21日 闰二月大 甲申年
    2006年8月24日 闰七月大 丙戊年
    2009年6月23日 闰五月大 己丑年
    2012年5月21日 闰四月小 壬辰年
    2014年10月24日 闰九月小 甲午年
    2017年7月23日 闰六月大 丁酉年
    2020年5月23日 闰四月小 庚子年
    2023年3月22日 闰二月大 癸卯年
    2025年7月25日 闰六月大 己巳年
    2028年6月23日 闰五月大 戊申年
    2031年4月22日 闰三月大 辛亥年
    2033年8月25日 闰七月大 癸丑年
    2036年7月23日 闰六月小 丙辰年
    2039年6月22日 闰五月大 己未年
    2042年3月22日 闰二月大 壬戊年

有一个现成的例子,javascript农历日历,试了一下很准确,起码我的生日没算错
https://www.xfocus.net/bbs/index ... p;t=1479&p=3970

TOP

返回列表