以文本方式查看主题

-  中华农历论坛  (http://bbs.nongli.net/index.asp)
--  历法知识  (http://bbs.nongli.net/list.asp?boardid=2)
----  [原创]新词:干支纪年  (http://bbs.nongli.net/dispbbs.asp?boardid=2&id=16534)

--  作者:秦汉昌
--  发布时间:2009/1/3 23:12:00
--  [原创]新词:干支纪年
使用本词必须装载干支转换模板,源程序连接地址如下:

[秦汉昌、万邦来朝九龙原创]干支转换模板更新[苏子琼汉语编程论坛]
http://bbs.suziqiong.cn/bbs/dispbbs.asp?boardid=50&Id=130

 【自定义词】
 

装载 干支转换模板


编 干支后纪年 ( 距某甲子年的年数值 --- 纪 世 代 年 )
{ \\ 干支后纪年串 -- }
255 个字节空给 干支后纪年串
 ♂ 216000 / 1 + ♂ 10 求余数 ↑↓ 12 求余数 数转干支 干支后纪年串 字串传送
字串"  纪 " 干支后纪年串 字串+传送
  ♂ 3600 / 1 + ♂ 10 求余数 ↑↓ 12 求余数 数转干支 干支后纪年串 字串+传送
字串"  世 " 干支后纪年串 字串+传送
 ♂ 60 / 1 + ♂ 10 求余数 ↑↓ 12 求余数 数转干支 干支后纪年串 字串+传送
字串"  代 " 干支后纪年串 字串+传送
 ♂ 10  求余数 ↑↓ 12 求余数 数转干支 干支后纪年串 字串+传送
字串"  年" 干支后纪年串 字串+传送 
干支后纪年串 计字节
 。

编 干支后纪年 ( 距某甲子年的年数值 --- 纪 世 代 年 )
{ \\ 干支后纪年串 -- }
255 个字节空给 干支后纪年串
 ♂ 216000 / 1 + ♂ 10 求余数 ↑↓ 12 求余数 数转干支 干支后纪年串 字串传送
字串"  纪 " 干支后纪年串 字串+传送
  ♂ 3600 / 1 + ♂ 10 求余数 ↑↓ 12 求余数 数转干支 干支后纪年串 字串+传送
字串"  世 " 干支后纪年串 字串+传送
 ♂ 60 / 1 + ♂ 10 求余数 ↑↓ 12 求余数 数转干支 干支后纪年串 字串+传送
字串"  代 " 干支后纪年串 字串+传送
 ♂ 10  求余数 ↑↓ 12 求余数 数转干支 干支后纪年串 字串+传送
字串"  年" 干支后纪年串 字串+传送 
干支后纪年串 计字节
 。

编 干支前纪年 ( 距某甲子年的年数值 --- 纪 世 代 年 )
{ \\ 干支前纪年串 -- }
255 个字节空给 干支前纪年串
字串" 前 " 干支前纪年串 字串传送
 ♂ 216000 / 1 + ♂ 10 求余数 ↑↓ 12 求余数 数转干支 干支前纪年串 字串+传送
字串"  纪 " 干支前纪年串 字串+传送
  ♂ 3600 / 1 + ♂ 10 求余数 ↑↓ 12 求余数 数转干支 干支前纪年串 字串+传送
字串"  世 " 干支前纪年串 字串+传送
 ♂ 60 / 1 + ♂ 10 求余数 ↑↓ 12 求余数 数转干支 干支前纪年串 字串+传送
字串"  代 " 干支前纪年串 字串+传送
 ♂ 10  求余数 ↑↓ 12 求余数 数转干支 干支前纪年串 字串+传送
字串"  年" 干支前纪年串 字串+传送 
干支前纪年串 计字节
 。

编 干支纪年 ( 距某甲子年的年数值 --- 纪 世 代 年 )
 ♂ 属性值 0= 非 就 实>数 然后
 ♂ 0= 就 字串" 年数值不正确" 印字串 否则
 ♂ 0> 就 干支后纪年 否则 绝对值 干支前纪年
然后 然后 。


 

【功能介绍】
   将一个以某一甲子年为起点的年份数值放在数摞上。然后,在“干支纪年”这个词的帮助下转换成一个地址、长度格式的字符串,该字串以纪、世、代、年四个单位的干支计数方法表示历史上某一甲子年距离当前年份的总年数。

【使用详解】
 格式: xxxxxx 干支纪年 

 参数:任意数字 (整数或实数)

 返回:一个地址、长度格式的字符串 

【应用举例】

   距今(西元2009年)4706年前,是甲子年,假设以4706年前的甲子年算起,现在(西元2009年)的干支纪年是,计算如下:

4706 干支纪年 印字串 甲子 纪 乙丑 世 壬午 代 己丑 年★
-4706 干支纪年 印字串 前 甲子 纪 乙丑 世 壬午 代 己丑 年★.
1 干支纪年 印字串 甲子 纪 甲子 世 甲子 代 甲子 年★.
0 干支纪年 年数值不正确★.
-1 干支纪年 印字串 前 甲子 纪 甲子 世 甲子 代 甲子 年★.
789456123 干支纪年 印字串 戊午 纪 丁巳 世 丙戌 代 丙寅 年★.
-789456123 干支纪年 印字串 前 戊午 纪 丁巳 世 丙戌 代 丙寅 年★.
 

【注意事项】

必须注意,表示年份数的数值必须以历史上某一甲子年为起点计算;年数值整数部分最多限九位以内(含九位,不包括正、负号)。

【版权声明】
版权所有,可以共享

\\  /////////////★秦汉昌★2009.元.3★

[原创]新词:干支纪年[苏子琼汉语编程论坛]
http://bbs.suziqiong.cn/bbs/dispbbs.asp?boardid=49&Id=147

[此贴子已经被作者于2009-1-4 2:20:52编辑过]

--  作者:浪-淘-沙
--  发布时间:2009/1/4 10:59:00
--  
不错,在我上次的建议之上又增加了一个"纪",这样可以表达1296万年了(60*60*60*60),估计到"癸亥纪癸亥世癸亥代癸亥年"时,地球上可能已经没有人类了.图片点击可在新窗口打开查看所以也不用担心这之后的纪年如何表达了.
--  作者:浪-淘-沙
--  发布时间:2009/1/4 12:27:00
--  

还有个小问题,我一直没仔细去看.

农历黄帝纪年元年,是从公历公元前2698年2月21日(癸亥年 癸丑月 癸亥日)开始,一直到公历公元前2697年3月10日(癸亥年 丙寅月 丙戌日)结束.

黄帝纪年二年正月初一(甲子年 丙寅月 丁亥日)开始才算是甲子年的开始。

但若按“八字”来排,甲子年是从立春开始的。即公历公元前2697年2月26日3:36:17才算是甲子年的起始时刻。(甲子年 丙寅月 癸酉日 甲寅时)(黄帝元年十二月十七日)。

看来秦汉昌兄若要按干支纪年来表示日期还得把时间的起点统一一下才好。


--  作者:秦汉昌
--  发布时间:2009/1/4 21:14:00
--  

  呵呵,我正在探索中,关于月、日、时、分、秒的干支表示问题,最重要的是要根据夏历来确定其算法,在算法方面,希望有高手相助!!!!!!!!!!!!!!!!!!!!!!


--  作者:杨半仙
--  发布时间:2009/1/6 14:48:00
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看
--  作者:xjw01
--  发布时间:2009/1/6 17:07:00
--  

严格的八字计算(命理用的)比较麻烦,得先把节气、本地真太阳时算好了才行。

您有多种途径解决此问题:

(1)花一些时间研究一下相关的天文算法,准确算出节气及太阳时,然后再定出八字

(2)把别人的程序翻译为“汉编”代码,这是捷径。因为,研究天文知识还需要研习相关的数理知识及编程方法,在学习资料及业于时间不足的情况下,可能几年下来也未必有结果。

建议学习一下javascript,这样就可以直接阅读《寿星万年历》或其它相关软件的代码了。如果你有了“汉编”基础,相信学习javascript只需几天时间。我以前学习C语言,后来改学C++,这一改变花了很多时间,但是,学习javascript我只花了几天时间。我当时买了一本[美]John Pollock著的《JavaScript编程起步》,前前后后,只花费不到一星期时间。当然也可以考虑学习一下VB等,有时候我也用VBA写点小程序,挺有意思的。

本人不太推荐完全依靠网络上提供的资料进行学习,虽然网络上的资料多,但比较零散,知识系统性较差,影响学习效率。当然,现在想买一本好书也很不容易。国产的教科书大多是学者们为了评职称编写的,大多是剪刀糨糊拼凑而成,可读性较差。

举例来说,《天文算法》一书,把算法的每个步骤详细讲解,并把读者可能范的错误不断的重复提示,同时尽可能给出计算过程中所需的所有数据,确保读者使用此书能够编写出想要的程序,它替读者考虑很多很多,可谓循循善诱,细微入致。而国产书籍,这等好书是很难见到的。

我是一个不善于读书的人,能让我把一本专业书从头到尾读完90%的基本都是国外译著。


--  作者:xjw01
--  发布时间:2009/1/6 17:09:00
--  
有个网友曾经托我把《寿星万年历》中的八字计算单独提取出来,需要的话我就帖上去
--  作者:lxm0521
--  发布时间:2009/1/6 20:41:00
--  
以下是引用xjw01在2009-1-6 17:09:00的发言:
有个网友曾经托我把《寿星万年历》中的八字计算单独提取出来,需要的话我就帖上去

热烈欢迎许老师贴出代码图片点击可在新窗口打开查看
--  作者:秦汉昌
--  发布时间:2009/1/6 20:59:00
--  
以下是引用xjw01在2009-1-6 17:07:00的发言:

严格的八字计算(命理用的)比较麻烦,得先把节气、本地真太阳时算好了才行。

您有多种途径解决此问题:

(1)花一些时间研究一下相关的天文算法,准确算出节气及太阳时,然后再定出八字

(2)把别人的程序翻译为“汉编”代码,这是捷径。因为,研究天文知识还需要研习相关的数理知识及编程方法,在学习资料及业于时间不足的情况下,可能几年下来也未必有结果。

建议学习一下javascript,这样就可以直接阅读《寿星万年历》或其它相关软件的代码了。如果你有了“汉编”基础,相信学习javascript只需几天时间。我以前学习C语言,后来改学C++,这一改变花了很多时间,但是,学习javascript我只花了几天时间。我当时买了一本[美]John Pollock著的《JavaScript编程起步》,前前后后,只花费不到一星期时间。当然也可以考虑学习一下VB等,有时候我也用VBA写点小程序,挺有意思的。

本人不太推荐完全依靠网络上提供的资料进行学习,虽然网络上的资料多,但比较零散,知识系统性较差,影响学习效率。当然,现在想买一本好书也很不容易。国产的教科书大多是学者们为了评职称编写的,大多是剪刀糨糊拼凑而成,可读性较差。

举例来说,《天文算法》一书,把算法的每个步骤详细讲解,并把读者可能范的错误不断的重复提示,同时尽可能给出计算过程中所需的所有数据,确保读者使用此书能够编写出想要的程序,它替读者考虑很多很多,可谓循循善诱,细微入致。而国产书籍,这等好书是很难见到的。

我是一个不善于读书的人,能让我把一本专业书从头到尾读完90%的基本都是国外译著。

    谢谢,说得对,我也很想寻求一种适当的方法来学习,我认为学习javascript并达到能读董一般的程序的水平,应该不是很难,而且关于VB的初级知识我也学习过;在学习和编写天文算法程序方面,我觉得问题在于天文算法本身,我只要了解了天文算法的一些基础知识,是可以阅读寿星万年历等程序的。关于天文算法,不需要知道太祥细,但一定要知道他的基本套路,能理解它,知道所运用的公式要达到的目的,比如,计算儒略日,由儒略日推算历日这样的小公式,我从您的程序说明里看到了计算过程,且能理解它,所以我能用汉编重新编写。

   不知道《天文算法》有没有中文版,这样的书对学习很有帮助?


--  作者:秦汉昌
--  发布时间:2009/1/6 21:03:00
--  
以下是引用xjw01在2009-1-6 17:09:00的发言:
有个网友曾经托我把《寿星万年历》中的八字计算单独提取出来,需要的话我就帖上去

盼望许老师能贴上,如果方便,可否增加一些程序说明,谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!