《历术甲子篇》冬至合朔表

《历术甲子篇》所用为四分历,岁实365又1/4,朔策29又499/940,亦为实际的殷历(建寅为正)。

殷历创制于公元前427年(周考王十四年),沿用至公元前105年(汉武帝元封六年,次年改历),即本表可以用于参照史料的适用范围。

公元前427年,是年实际天象日月合朔与冬至同日同时,在子时正,位在牵牛初度。符合四分历的蔀首,干支为己酉。由此用四分法,反推以蔀首为甲子的时日作为历元,即需要反推15蔀共1140年(BC1167年作为历元)。

#设某年的上一年十一月冬至合朔,干支为甲子,日月在牛宿初度(即十一月甲子夜半朔旦冬至,日月俱起于牵牛之初)
tiangan = ["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
dizhi = ["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
ganzhi =['']*60
for i in range(60):
	ganzhi[i] = tiangan[i%10]+dizhi[(i)%12]
direction = ['正东','正南','正西','正北']
suiyang = ["焉逢","端蒙","游兆","彊梧","徒維","祝犁","商橫","昭陽","橫艾","尚章"]
suiyin = ["困敦","赤奮若","攝提格","單閼","執徐","大荒落","敦牂","協洽","涒灘","作鄂","淹茂","大淵獻"]
lsjzp = open("历术甲子篇.csv",'w')
#基本常数
yue = 29+499/940 #朔策
zai = 12 * yue #太阴年
sui = 365+1/4 #岁实
sdrf = 940 #朔旦日法
dzrf = 32 #冬至日法
epoch = -1567 #太初元年为《历术甲子篇》历元,非汉武帝太初元年(-104)
sddy = int(zai) % 60 #朔旦大余54
sddy_0 = 0 - sddy #朔旦大余前值
sdxy= (499 * 12 ) % 940 #朔旦小余348
sdxy_0 = 0 - sdxy #朔旦小余前值
dzdy = int(sui) % 60 #冬至大余
dzdy_0 = 0 - dzdy
dzxy = 8 #冬至小余
dzxy_0 = 0 - dzxy
ry = 0

header = ["公元纪年","干支纪年","年序","年名","纪数","蔀数","蔀首","入蔀年","章数","章首","年前十一月朔旦大余","年前十一月朔旦小余","年前十一月朔日干支","年前十一月合朔时刻","年前十一月冬至大余","年前十一月冬至小余","年前十一月冬至干支","年前十一月冬至时刻",'月',"方向"]
lsjzp.write(','.join(header)+'\n')
print("干支纪年","年序","\t  年名","\t\t蔀数","蔀首","入蔀年","章数","章首","前大余","\t前小余","\t前朔日","\t合朔时刻","\t\t后大余","\t后小余","\t冬至干支","\t冬至时刻",' 月',"\t 方向")

def qy(dy_0,xy_0,rf,dy,xy): #求大小余分(余分前值,日法,余分)
    xy_0 += xy
    if xy_0 >= rf:
        dy_0 += 1
        xy_0 -= rf
    dy_0 = (dy_0 + dy) % 60
    return dy_0,xy_0

def heshuo(yf,rf): #求合朔时间(余分,日法)
    chen = yf / rf * 24  # 合朔时间
    chen_h = int(chen)
    chen_m = int((chen - chen_h) * 60)
    hssj = str(chen_h)+'时'+str(chen_m)+'分'
    return hssj

#i+1为是年,i为是年前一年
for i in range(4561): #一元=3*一纪=3*20=一蔀=3*20*4*一掌=3*20*4*19
    if ry >= 19:     #置闰方法:闰余法
        sddy_0,sdxy_0 = qy(sddy_0,sdxy_0,sdrf,sddy+int(yue),sdxy+499) #加一个闰月,大余为29,小余为499
        ry -= 19
    else:
        sddy_0,sdxy_0 = qy(sddy_0,sdxy_0,sdrf,sddy,sdxy)
    ry += 7 #每年闰余为7/19月
    month = ''
    if ry >=19:
        yry = (ry-7)*12
        for j in range(12):
            yry += 7
            if yry >=228:
                month= '闰' + yuefen[(j - 2) % 12]
                break
    dzdy_0, dzxy_0 = qy(dzdy_0,dzxy_0, dzrf, dzdy, dzxy)
    dz = int((dzxy_0/32)*12)
    ce = epoch + i
    if sdxy_0 == 0: #朔旦无小余时,为一蔀蔀首
        bu = ganzhi[sddy_0] #输出蔀首名(是年前十一月朔旦冬至干支)
    if sddy_0 == dzdy_0: #朔旦大余=冬至大余时,为一章章首
        zhang = ganzhi[sddy_0] #输出章首名
    if ce >= 0: ce += 1 #无公元0年
    if ce < 0: ce = 'BC'+str(ce)[1:]+'年'
    else: ce = "公元"+str(ce)+'年'
    ls = [ce,tiangan[i%10]+dizhi[(i+2)%12],i+1,suiyang[i%10]+suiyin[(i+2)%12],(i//1520)%3+1,(i//76)%20+1,bu,i%76+1,i//19+1,zhang,sddy_0,sdxy_0,
          ganzhi[sddy_0], heshuo(sdxy_0, 940),dzdy_0,dzxy_0,ganzhi[dzdy_0],str(dz*2)+' '+dizhi[dz]+'时',month,direction[(dz//3-1)%4]]
    lsjzp.write(','.join('%s' %id for id in ls)+'\n')
    if i < 77: #输出甲子蔀以供参考
	    print(ce,'\t ',i+1,'\t',suiyang[i%10]+suiyin[(i+2)%12],'\t',i//1520+1,' ',(i//76+1)%20, '',' ',i%76+1,bu,' ',i//19+1,'',zhang,' ',tiangan[i%10]+dizhi[(i+2)%12],'  ',sddy_0, '\t',sdxy_0,'\t',ganzhi[sddy_0],' ',heshuo(sdxy_0, 940),'\t',dzdy_0,'\t',dzxy_0,' \t',ganzhi[dzdy_0],' \t'+str(dz*2)+' '+dizhi[dz]+'时','\t',month,'\t',direction[dz//3-1])

lsjzp.close()

程序运行生成一元三纪4560年的每年年前十一月朔旦冬至的朔闰表(csv格式文件)

甲子蔀 输出参考(源程序在Python脚本下输出对齐):

干支纪年 年序       年名         蔀数 蔀首 入蔀年 章数 章首 前大余     前小余     前朔日     合朔时刻         后大余     后小余     冬至干支     冬至时刻  闰月      方向
甲寅      1      焉逢攝提格      1  甲子   1   1  甲子   0      0      甲子   0时0分      0      0       甲子      0 子时            正北
乙卯      2      端蒙單閼      1  甲子   2   1  甲子   54      348      戊午   8时53分      5      8       己巳      6 卯时            正东
丙辰      3      游兆執徐      1  甲子   3   1  甲子   48      696      壬子   17时46分      10      16       甲戌      12 午时      闰6月      正南
丁巳      4      彊梧大荒落      1  甲子   4   1  甲子   12      603      丙子   15时23分      15      24       己卯      18 酉时            正西
戊午      5      徒維敦牂      1  甲子   5   1  甲子   7      11      辛未   0时16分      21      0       乙酉      0 子时            正北
己未      6      祝犁協洽      1  甲子   6   1  甲子   1      359      乙丑   9时9分      26      8       庚寅      6 卯时      闰3月      正东
庚申      7      商橫涒灘      1  甲子   7   1  甲子   25      266      己丑   6时47分      31      16       乙未      12 午时            正南
辛酉      8      昭陽作鄂      1  甲子   8   1  甲子   19      614      癸未   15时40分      36      24       庚子      18 酉时            正西
壬戌      9      橫艾淹茂      1  甲子   9   1  甲子   14      22      戊寅   0时33分      42      0       丙午      0 子时      闰11月      正北
癸亥      10      尚章大淵獻      1  甲子   10   1  甲子   37      869      辛丑   22时11分      47      8       辛亥      6 卯时            正东
甲子      11      焉逢困敦      1  甲子   11   1  甲子   32      277      丙申   7时4分      52      16       丙辰      12 午时      闰8月      正南
乙丑      12      端蒙赤奮若      1  甲子   12   1  甲子   56      184      庚申   4时41分      57      24       辛酉      18 酉时            正西
丙寅      13      游兆攝提格      1  甲子   13   1  甲子   50      532      甲寅   13时34分      3      0       丁卯      0 子时            正北
丁卯      14      彊梧單閼      1  甲子   14   1  甲子   44      880      戊申   22时28分      8      8       壬申      6 卯时      闰4月      正东
戊辰      15      徒維執徐      1  甲子   15   1  甲子   8      787      壬申   20时5分      13      16       丁丑      12 午时            正南
己巳      16      祝犁大荒落      1  甲子   16   1  甲子   3      195      丁卯   4时58分      18      24       壬午      18 酉时            正西
庚午      17      商橫敦牂      1  甲子   17   1  甲子   57      543      辛酉   13时51分      24      0       戊子      0 子时      闰1月      正北
辛未      18      昭陽協洽      1  甲子   18   1  甲子   21      450      乙酉   11时29分      29      8       癸巳      6 卯时            正东
壬申      19      橫艾涒灘      1  甲子   19   1  甲子   15      798      己卯   20时22分      34      16       戊戌      12 午时      闰9月      正南
癸酉      20      尚章作鄂      1  甲子   20   2  癸卯   39      705      癸卯   18时0分      39      24       癸卯      18 酉时            正西
甲戌      21      焉逢淹茂      1  甲子   21   2  癸卯   34      113      戊戌   2时53分      45      0       己酉      0 子时            正北
乙亥      22      端蒙大淵獻      1  甲子   22   2  癸卯   28      461      壬辰   11时46分      50      8       甲寅      6 卯时      闰6月      正东
丙子      23      游兆困敦      1  甲子   23   2  癸卯   52      368      丙辰   9时23分      55      16       己未      12 午时            正南
丁丑      24      彊梧赤奮若      1  甲子   24   2  癸卯   46      716      庚戌   18时16分      0      24       甲子      18 酉时            正西
戊寅      25      徒維攝提格      1  甲子   25   2  癸卯   41      124      乙巳   3时9分      6      0       庚午      0 子时      闰3月      正北
己卯      26      祝犁單閼      1  甲子   26   2  癸卯   5      31      己巳   0时47分      11      8       乙亥      6 卯时            正东
庚辰      27      商橫執徐      1  甲子   27   2  癸卯   59      379      癸亥   9时40分      16      16       庚辰      12 午时            正南
辛巳      28      昭陽大荒落      1  甲子   28   2  癸卯   53      727      丁巳   18时33分      21      24       乙酉      18 酉时      闰11月      正西
壬午      29      橫艾敦牂      1  甲子   29   2  癸卯   17      634      辛巳   16时11分      27      0       辛卯      0 子时            正北
癸未      30      尚章協洽      1  甲子   30   2  癸卯   12      42      丙子   1时4分      32      8       丙申      6 卯时      闰8月      正东
甲申      31      焉逢涒灘      1  甲子   31   2  癸卯   35      889      己亥   22时41分      37      16       辛丑      12 午时            正南
乙酉      32      端蒙作鄂      1  甲子   32   2  癸卯   30      297      甲午   7时34分      42      24       丙午      18 酉时            正西
丙戌      33      游兆淹茂      1  甲子   33   2  癸卯   24      645      戊子   16时28分      48      0       壬子      0 子时      闰4月      正北
丁亥      34      彊梧大淵獻      1  甲子   34   2  癸卯   48      552      壬子   14时5分      53      8       丁巳      6 卯时            正东
戊子      35      徒維困敦      1  甲子   35   2  癸卯   42      900      丙午   22时58分      58      16       壬戌      12 午时            正南
己丑      36      祝犁赤奮若      1  甲子   36   2  癸卯   37      308      辛丑   7时51分      3      24       丁卯      18 酉时      闰1月      正西
庚寅      37      商橫攝提格      1  甲子   37   2  癸卯   1      215      乙丑   5时29分      9      0       癸酉      0 子时            正北
辛卯      38      昭陽單閼      1  甲子   38   2  癸卯   55      563      己未   14时22分      14      8       戊寅      6 卯时      闰9月      正东
壬辰      39      橫艾執徐      1  甲子   39   3  癸未   19      470      癸未   12时0分      19      16       癸未      12 午时            正南
癸巳      40      尚章大荒落      1  甲子   40   3  癸未   13      818      丁丑   20时53分      24      24       戊子      18 酉时            正西
甲午      41      焉逢敦牂      1  甲子   41   3  癸未   8      226      壬申   5时46分      30      0       甲午      0 子时      闰6月      正北
乙未      42      端蒙協洽      1  甲子   42   3  癸未   32      133      丙申   3时23分      35      8       己亥      6 卯时            正东
丙申      43      游兆涒灘      1  甲子   43   3  癸未   26      481      庚寅   12时16分      40      16       甲辰      12 午时            正南
丁酉      44      彊梧作鄂      1  甲子   44   3  癸未   20      829      甲申   21时9分      45      24       己酉      18 酉时      闰3月      正西
戊戌      45      徒維淹茂      1  甲子   45   3  癸未   44      736      戊申   18时47分      51      0       乙卯      0 子时            正北
己亥      46      祝犁大淵獻      1  甲子   46   3  癸未   39      144      癸卯   3时40分      56      8       庚申      6 卯时            正东
庚子      47      商橫困敦      1  甲子   47   3  癸未   33      492      丁酉   12时33分      1      16       乙丑      12 午时      闰11月      正南
辛丑      48      昭陽赤奮若      1  甲子   48   3  癸未   57      399      辛酉   10时11分      6      24       庚午      18 酉时            正西
壬寅      49      橫艾攝提格      1  甲子   49   3  癸未   51      747      乙卯   19时4分      12      0       丙子      0 子时      闰8月      正北
癸卯      50      尚章單閼      1  甲子   50   3  癸未   15      654      己卯   16时41分      17      8       辛巳      6 卯时            正东
甲辰      51      焉逢執徐      1  甲子   51   3  癸未   10      62      甲戌   1时34分      22      16       丙戌      12 午时            正南
乙巳      52      端蒙大荒落      1  甲子   52   3  癸未   4      410      戊辰   10时28分      27      24       辛卯      18 酉时      闰4月      正西
丙午      53      游兆敦牂      1  甲子   53   3  癸未   28      317      壬辰   8时5分      33      0       丁酉      0 子时            正北
丁未      54      彊梧協洽      1  甲子   54   3  癸未   22      665      丙戌   16时58分      38      8       壬寅      6 卯时            正东
戊申      55      徒維涒灘      1  甲子   55   3  癸未   17      73      辛巳   1时51分      43      16       丁未      12 午时      闰1月      正南
己酉      56      祝犁作鄂      1  甲子   56   3  癸未   40      920      甲辰   23时29分      48      24       壬子      18 酉时            正西
庚戌      57      商橫淹茂      1  甲子   57   3  癸未   35      328      己亥   8时22分      54      0       戊午      0 子时      闰9月      正北
辛亥      58      昭陽大淵獻      1  甲子   58   4  癸亥   59      235      癸亥   6时0分      59      8       癸亥      6 卯时            正东
壬子      59      橫艾困敦      1  甲子   59   4  癸亥   53      583      丁巳   14时53分      4      16       戊辰      12 午时            正南
癸丑      60      尚章赤奮若      1  甲子   60   4  癸亥   47      931      辛亥   23时46分      9      24       癸酉      18 酉时      闰6月      正西
甲寅      61      焉逢攝提格      1  甲子   61   4  癸亥   11      838      乙亥   21时23分      15      0       己卯      0 子时            正北
乙卯      62      端蒙單閼      1  甲子   62   4  癸亥   6      246      庚午   6时16分      20      8       甲申      6 卯时            正东
丙辰      63      游兆執徐      1  甲子   63   4  癸亥   0      594      甲子   15时9分      25      16       己丑      12 午时      闰3月      正南
丁巳      64      彊梧大荒落      1  甲子   64   4  癸亥   24      501      戊子   12时47分      30      24       甲午      18 酉时            正西
戊午      65      徒維敦牂      1  甲子   65   4  癸亥   18      849      壬午   21时40分      36      0       庚子      0 子时            正北
己未      66      祝犁協洽      1  甲子   66   4  癸亥   13      257      丁丑   6时33分      41      8       乙巳      6 卯时      闰11月      正东
庚申      67      商橫涒灘      1  甲子   67   4  癸亥   37      164      辛丑   4时11分      46      16       庚戌      12 午时            正南
辛酉      68      昭陽作鄂      1  甲子   68   4  癸亥   31      512      乙未   13时4分      51      24       乙卯      18 酉时      闰8月      正西
壬戌      69      橫艾淹茂      1  甲子   69   4  癸亥   55      419      己未   10时41分      57      0       辛酉      0 子时            正北
癸亥      70      尚章大淵獻      1  甲子   70   4  癸亥   49      767      癸丑   19时34分      2      8       丙寅      6 卯时            正东
甲子      71      焉逢困敦      1  甲子   71   4  癸亥   44      175      戊申   4时28分      7      16       辛未      12 午时      闰4月      正南
乙丑      72      端蒙赤奮若      1  甲子   72   4  癸亥   8      82      壬申   2时5分      12      24       丙子      18 酉时            正西
丙寅      73      游兆攝提格      1  甲子   73   4  癸亥   2      430      丙寅   10时58分      18      0       壬午      0 子时            正北
丁卯      74      彊梧單閼      1  甲子   74   4  癸亥   56      778      庚申   19时51分      23      8       丁亥      6 卯时      闰1月      正东
戊辰      75      徒維執徐      1  甲子   75   4  癸亥   20      685      甲申   17时29分      28      16       壬辰      12 午时            正南
己巳      76      祝犁大荒落      1  甲子   76   4  癸亥   15      93      己卯   2时22分      33      24       丁酉      18 酉时      闰9月      正西
庚午      77      商橫敦牂      2  癸卯   1   1  癸卯   39      0      癸卯   0时0分      39      0       癸卯      0 子时            正北

猜你喜欢

转载自blog.csdn.net/weixin_42763614/article/details/81436936