请教元旦干支、年干支推算法

我一直以为元旦干支就是当年的干支,可好像错了

1,年元旦干支的求法是:以本年元旦干支为基础,求下一年的元旦干支,本年若为平年,则本年元旦干支加五,即得下一年的元旦干支;本年若为闰年,则本年元旦干支加六,即得下一年的年元旦干支。

2,农历日干支推算口诀:大小月卦记心间,正一干支起根源。大后干同地支冲,小后干支退一天。 初一十三二十五,支同隔干一位算。


“大小月卦记心间,正一干支起根源。”农历的大月为30天小月为29天,固定不变。要推农历日干支,先要按《农历大小月卦口诀》将推算之年编上两卦,以便在推算日干支时运用。除此之外,还必须要记住农历正月初一日的干支,因为它是推算一年逐日的基础。

“大后干同地支冲,小后干支退一天。”大月初一的干支与后一个月初一的干支天干相同,地支相冲。小月初一的干支与后一个月初一的干支天干相同地支相冲之日再后退一天。


如本月是大月,初一干支为己卯,下月的初一干支就是己酉。如果这个月是小月,则下月初一干支应在己酉后退一位后确定,即为戊申日。

“初一十三二十五,支同干隔一位算。”此两句是在确定某月初一干支后,将这个月分成三个阶段,即初一至十二,十三至二十四,二十五以后。初一、十三、二十五日在干支上也是有规律的。知道初一干支,只要将该日天干隔一位顺推,而地支不变。


同理,知道十三日干支,支同干隔一位,也知道二十五日的干支。如初一日干支为甲子,则十三日干支为丙子,二十五日干支为戊子。掌握这个方法,就可以根据所推之日属于哪一段,便可以很快知道这天的干支了。


温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-12
年元旦干支是指年元旦日干支,即每年一月一日的干支,实际上它是某一日的日干支。子午流注纳甲法是根据日、时干支来推算开穴的,所以必须熟练掌握日、时干支的推算。但是,要知道日、时干支,又必须先知道年元旦干支和月元干支。年元旦干支的求法是:以本年元旦干支为基础,求下一年的元旦干支,本年若为平年,则本年元旦干支加五,即得下一年的元旦干支;本年若为闰年,则本年元旦干支加六,即得下一年的年元旦干支。列公式如下:本年(平年)元旦干支+5=下一年元旦干支本年(闰年)元旦干支+6=下一年元旦干支何谓“加五”、“加六”?加五、加六是指天干、地支都进五位或六位。例如:已知1983年为平年,其元旦干支为己丑(见表8),则1984年元旦干支为:己丑+5=甲午。掌上推算方法是:把己定在丑位上,干支进五位即为甲午。又如:已知1984年为闰年,其元旦干支为甲午,求1985年元旦干支,按上述公式:甲午+6=庚子。为什么平年加五、闰年加六呢?这是因为地球绕太阳公转一周,需时365天5小时48分46秒。平年为365天,余下的5小时48分46秒,积四年得23小时15分零4秒,约为一天,所以每隔四年立一闰,闰年二月比平年二月多一天,即29天,即闰年为366天。平年365天,365÷60(干支周转数)=6……余5,所以平年元旦到次年元旦干支相差5天。闰年366天,366÷60(干支周转数)=6……余6,所以闰年元旦到次年元旦干支相差6天。这就是平年加五闰年加六的缘故。但是,怎么知道其为平年或闰年呢?下面介绍两种识别平年和闰年的简单方法:(1)用四去除公元年数,凡能除尽者为闰年、除不尽者为平年。例如:公元1983年(癸亥年),1983÷4=495……余3,即1983年不能被4除尽,所以1983年为平年。又如:1984年能被4除尽,所以该年为闰年。但是,在用这种方法的时候要注意:由于4年加1天又多了44分56秒(24小时-23小时15分4秒=44分56秒),积满128年左右就又多算了1天(23小时57分52秒),也就是说在400年中约多算了3天。为了把这3天抵消掉,所以必须每百年停闰,每400年又不停闰。历法规定:公元数(非公元世纪整数)能被4除尽的,就是闰年;凡公元世纪的整数,能被400除尽的,才算闰年。如公元400年、800年、1200年、1600年、2000年等都是闰年;如公元1000年、1500年、1700年、1800年、1900年等虽能被4除尽,但不能被400除尽,所以不是闰年。(2)凡年支是申、子、辰的,该年就是闰年。如1984年(甲子年),其年支是子,所以该年是闰年。但需注意,如遇公元世纪的整数,不能被四百除尽的,其年支虽为申、子、辰,亦不是闰年,道理同上。本回答被网友采纳
第2个回答  2021-03-23

第3个回答  2021-07-14

提供一个ASP算法,

<%

function tuisuan(nian,yue,ri,shi,fen,miao,ngz,ygz,rgz,sgz,yinli,jiaojie)

dim tg(10)

dim dz(12)

dim jq(24)

tg(0)="甲"

tg(1)="乙"

tg(2)="丙"

tg(3)="丁"

tg(4)="戊"

tg(5)="己"

tg(6)="庚"

tg(7)="辛"

tg(8)="壬"

tg(9)="癸"'天干名称

dz(0)="子"

dz(1)="丑"

dz(2)="寅"

dz(3)="卯"

dz(4)="辰"

dz(5)="巳"

dz(6)="午"

dz(7)="未"

dz(8)="申"

dz(9)="酉"

dz(10)="戌"

dz(11)="亥"'地支名称

jq(0)="立春"

jq(1)="雨水"

jq(2)="惊蛰" 

jq(3)="春分" 

jq(4)="清明" 

jq(5)="谷雨" 

jq(6)="立夏" 

jq(7)="小满"

jq(8)="芒种"

jq(9)="夏至"

jq(10)="小暑"

jq(11)="大暑"

jq(12)="立秋" 

jq(13)="处暑" 

jq(14)="白露"

jq(15)="秋分" 

jq(16)="寒露" 

jq(17)="霜降" 

jq(18)="立冬"

jq(19)="小雪" 

jq(20)="大雪"

jq(21)="冬至"

jq(22)="小寒" 

jq(23)="大寒"'节气名称


shijian=nian&"-"&yue&"-"&ri&" "&shi&":"&fen&":"&miao

set fo=server.createobject("scripting.filesystemobject")

path=server.mappath("jieqi.txt")

set cal=fo.opentextfile(path)'读取24节气交节时刻表

tag=true 

i=0

while not cal.atendofstream and tag

str=cal.readline

strarr=split(str,",")

jieqi=strarr(1)&"-"&strarr(2)&"-"&strarr(3)&" "&strarr(4)&":"&strarr(5)&":"&strarr(6)

zhongqi=strarr(1)&"-"&strarr(2)&"-"&strarr(7)&" "&strarr(8)&":"&strarr(9)&":"&strarr(10)

if trim(strarr(1))=trim(nian) then

i=i+1

if datediff("d",shijian,jieqi)<=0 and datediff("d",shijian,zhongqi)>0 then

tag=false

gzyue=strarr(2)-1

if gzyue=0 then

gzyue=12

end if

if strarr(2)>=2 then

gznian=strarr(1)

else

gznian=strarr(1)-1

end if

jiaojie=jq((2*i+20)mod 24)&":"&jieqi&" "&jq(((2*i+20)mod 24)+1)&":"&zhongqi

elseif datediff("d",shijian,jieqi)>=0 and datediff("d",shijian,zhongqi)>=0 then

tag=false

gzyue=strarr(2)-2

if gzyue=0 then

gzyue=12

end if

if strarr(2)>=3 then

gznian=strarr(1)

else

gznian=strarr(1)-1

end if

end if

end if

if tag then

jiaojie=jq((2*i+20)mod 24)&":"&jieqi&" "&jq(((2*i+20)mod 24)+1)&":"&zhongqi

end if

wend

cal.close'获取当前日期相邻的两个交节时刻

……

sdz=shi+1

sdz=int(sdz/2)

sdz=sdz+1

if sdz>12 then

sdz=sdz-12

end if

stg=rtg*2+sdz-12

if stg>10 then

stg=stg-10

elseif stg<=0 then

stg=stg+10

end if

sgz=tg(stg-1)&dz(sdz-1)'推算时干支

end function

%>

来源:

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网