ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: zopey

[分享] 农历计算程序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-2-16 19:54 | 显示全部楼层
非常佩服楼主。有个疑问请教:楼主表中结果与寿星历有一定的出入,2003年河北林道心出版的万年历纸质书大致与寿星历一致,细节有差异,台湾中央研究院发布有公元1年至今的公历农历对照表。与寿星历出有部分出入。
截止目前,1900年以前的公农历对照究竟哪个结果更靠谱呀?国家有没有公开发布过相关对照表?
从网上一些天文论文看,天文学术圈内应该是有一个相对精确的古代农历与现代农历的对照的,可惜并未向公众公开发布。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-16 20:33 | 显示全部楼层
cyfx2288 发表于 2019-2-16 19:54
非常佩服楼主。有个疑问请教:楼主表中结果与寿星历有一定的出入,2003年河北林道心出版的万年历纸质书大致 ...

你可以去“农历网”看看,那里比较专业。

TA的精华主题

TA的得分主题

发表于 2019-2-16 22:47 | 显示全部楼层
本帖最后由 YZC51 于 2019-2-17 07:55 编辑

古代万年历节选
明庄烈帝崇祯十五年·清太宗崇德七年壬午(公元1642年)
月份
正月
二月
三月
四月
五月
六月
七月
八月
九月
十月
十一月
闰十一月
十二月

月干支
壬寅
癸卯
甲辰
乙巳
丙午
丁未
戊申
己酉
庚戌
辛亥
壬子
壬子
癸丑
初一
公历
1.3
3.1
3.3
4.29
5.28
6.27
7.27
8.25
9.24
10,24
11.24
12.22
1.2
干支
辛未
辛丑
庚午
庚子
己巳
己亥
己巳
戊戌
戊辰
戊戌
丁乡尸
丁酉
丙寅
十一
公历
2.9
3.11
4. 9
5.9
6.7
7.7
8.6
9.4
30.4
33.3
12.2
1.1
1.3
干支
辛巳
辛亥
庚辰
庚戌
己夕F
己酉
己卯
戊申
戊寅
戊申
丁丑
丁未
丙子
廿一
公历
2.19
3.23
4.19
S.19
6.17
7.17
8.1b
9.14
10.14
11.13
12.12
1.11
2.9
干支
辛卯
辛酉
庚寅
庚申
己丑
己未
己丑
戊午
戊子
戊午
丁亥
丁巴
丙戌


TA的精华主题

TA的得分主题

发表于 2019-2-16 23:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
If getjq_12 > jda Then jda = jda - 5: GoTo haha '这一行加的妙!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-17 09:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
YZC51 发表于 2019-2-16 22:47
古代万年历节选
明庄烈帝崇祯十五年·清太宗崇德七年壬午(公元1642年)

皇帝年号 只能查表。能计算吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-17 10:01 | 显示全部楼层
cyfx2288 发表于 2019-2-16 19:54
非常佩服楼主。有个疑问请教:楼主表中结果与寿星历有一定的出入,2003年河北林道心出版的万年历纸质书大致 ...

还原历史只能按文献 修正:


中国古代历法要点   
  1、公元8年十二月初,王莽改国号为新,称始建国元年,并颁行以十二为岁首的殷历。因此公元8年少十二月。
  2、公元23年,汉淮阳王刘玄颁行新历,恢复以正月建寅为岁首的夏历,该年有两个十二月。
  3、公元237年,魏明帝改用以十二月为岁首的殷历,称“景初历”(亦称永初历),既把三月改为四月,是年无三月,只有11个月,公元238、239年均实行殷历,公元239年十二月复寅正,是年有两个十二月。
  4、公元689年,武则天颁行以十一月为岁首的周历,是年少十一月和十月,并将其移至公元690年岁首(称正月、腊月)。直至公元700年十月复寅正,该年有15个月。
  5、公元761年九月唐肃宗建宝应年号,并颁行以建子月为岁首的周历,该年仅10个月。但仅过半年,于公元762年四月复寅正,故该年有两个四月和五月,共有14个月。
  6、公元1582年罗马教皇格里高利修订历法称格里历,其中将1582年10月4日后的一天改为10月15日,星期序号仍然连续计算。这样就解决了儒历比回归年慢10日的情况,改年只有355天。
  7、公元前850年至公元前222年,岁首是指含冬至之月(农历建子之十一月)的朔日;公元前221-前104年,以颛顼历十月建亥为岁首;公元前104年后,采用夏历以正月初一为岁首。

TA的精华主题

TA的得分主题

发表于 2019-2-17 10:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
2014        闰九月小        2014        闰九

TA的精华主题

TA的得分主题

发表于 2019-2-17 11:01 | 显示全部楼层
zopey 发表于 2019-2-17 09:57
皇帝年号 只能查表。能计算吗?

是的,皇帝年号 只能查表。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-17 12:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
YZC51 发表于 2019-2-17 10:30
2014        闰九月小        2014        闰九

农历计算要点:1、日月合朔时刻所在的UTC日期为新月份初一,而不是上月的最后一天。所以,在合朔那一天正好是节气或中气,那么该气属本月(的初一),不是上月的。   举 例:冬至200x-12-22 10:00:00, K月的起止合朔时刻200x-11-23 xx:xx:xx和200x-12-22 11:00:00          K月的起止时刻范围已包含了冬至,但从日期看,冬至却不属于K月,冬至是下一个月的
2014年应该是遇到这个问题吧,代码修改如下
  1. If getjq_12 > jda Then
  2.    If Round(getjq_12, 0) = Round(jda, 0) Then Exit Function
  3.    jda = jda - 5: GoTo haha
  4. End If
复制代码



评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-2-17 23:50 | 显示全部楼层
zopey 发表于 2019-2-16 20:33
你可以去“农历网”看看,那里比较专业。

各种网站,我都查过,农历网、台湾中央研究院的网页。各版本之间总的算来部分年度相关一两天,部分年度润月份不同,应该定气精度造成的,或者是古人定气不准,或者是现代倒算结果由于一些特殊原因与古代真实天相不符。秦汉以前的公农历对照,不同版本相差就大了。唉,没有国家认可的统一版本,导致的结果就是无所适从、无可奈何。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 12:57 , Processed in 0.036488 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表