我一直以为元旦干支就是当年的干支,可好像错了
1,年元旦干支的求法是:以本年元旦干支为基础,求下一年的元旦干支,本年若为平年,则本年元旦干支加五,即得下一年的元旦干支;本年若为闰年,则本年元旦干支加六,即得下一年的年元旦干支。
2,农历日干支推算口诀:大小月卦记心间,正一干支起根源。大后干同地支冲,小后干支退一天。 初一十三二十五,支同隔干一位算。
“大小月卦记心间,正一干支起根源。”农历的大月为30天小月为29天,固定不变。要推农历日干支,先要按《农历大小月卦口诀》将推算之年编上两卦,以便在推算日干支时运用。除此之外,还必须要记住农历正月初一日的干支,因为它是推算一年逐日的基础。
“大后干同地支冲,小后干支退一天。”大月初一的干支与后一个月初一的干支天干相同,地支相冲。小月初一的干支与后一个月初一的干支天干相同地支相冲之日再后退一天。
如本月是大月,初一干支为己卯,下月的初一干支就是己酉。如果这个月是小月,则下月初一干支应在己酉后退一位后确定,即为戊申日。
“初一十三二十五,支同干隔一位算。”此两句是在确定某月初一干支后,将这个月分成三个阶段,即初一至十二,十三至二十四,二十五以后。初一、十三、二十五日在干支上也是有规律的。知道初一干支,只要将该日天干隔一位顺推,而地支不变。
同理,知道十三日干支,支同干隔一位,也知道二十五日的干支。如初一日干支为甲子,则十三日干支为丙子,二十五日干支为戊子。掌握这个方法,就可以根据所推之日属于哪一段,便可以很快知道这天的干支了。
提供一个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
%>
来源:
本回答被网友采纳