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

《历术甲子篇》所用为四分历,岁实365又1/4,朔策29又499/940。

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

公元前427年,是年实际天象日月合朔与冬至同日同时,在子时正,是制历的理想起点。历元年干支为己酉。由此用四分术,反推以蔀首为甲子的时日作为历元,即需要反推15蔀共1140年(BC1567年作为历元)。

《历术甲子篇》以十一月(冬至所在月)为岁首,而建寅为正。程序中使用的为年中置闰法。

tiangan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
dizhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
yuefen = ["正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
direction = ['正东', '正南', '正西', '正北']
suiyang = ["焉逢", "端蒙", "游兆", "彊梧", "徒維", "祝犁", "商橫", "昭陽", "橫艾", "尚章"]
suiyin = ["困敦", "赤奮若", "攝提格", "單閼", "執徐", "大荒落", "敦牂", "協洽", "涒灘", "作鄂", "淹茂", "大淵獻"]
lsjzp = open("历术甲子篇.csv", 'w')
ganzhi = [''] * 60
for i in range(60):
    ganzhi[i] = tiangan[i % 10] + dizhi[(i) % 12]
bsgz = [0] * 20  # 蔀首干支
for i in range(20):
    bsgz[i] = (i * 39) % 60
# 基本常数
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 方向")


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


for i in range(4561):  # 一元=3*一纪=3*20=一蔀=3*20*4*一掌=3*20*4*19
    # 置闰方法:闰余法
    if ry >= 12:  # 岁前闰余,即前岁岁末闰余
        yry = ry * 12
        zry = int((228 - yry) // 7)
        month = '闰' + yuefen[(zry - 2 - 1) % 12]
        sddy_0, sdxy_0 = qy(sddy_0, sdxy_0, sdrf, sddy + int(yue), sdxy + 499)  # 加一个闰月,大余为29,小余为499
        ry -= 19
    else:
        month = ''
        sddy_0, sdxy_0 = qy(sddy_0, sdxy_0, sdrf, sddy, sdxy)
    ry += 7  # 岁末闰余,每年闰余为7/19月
    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]  # 输出章首名
    rbs = (ce - epoch) // 76
    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 - bsgz[rbs % 20]) % 60, sdxy_0,
          ganzhi[sddy_0], heshuo(sdxy_0, 940), (dzdy_0 - bsgz[rbs % 20]) % 60, 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(
            tiangan[i % 10] + dizhi[(i + 2) % 12], '\t', i + 1, '\t', suiyang[i % 10] + suiyin[(i + 2) % 12], '\t', (
                        i // 76 + 1) % 20, '', i % 76 + 1, '\t', bu, ' ', i // 19 + 1, '', zhang, ' ', 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  甲子   18      255      壬午    6时30分      10      16       甲戌       12 午时      闰六月      正南
丁巳      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  甲子   30      858      甲午    21时54分      26      8       庚寅       6 卯时      闰三月      正东
庚申      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  甲子   43      521      丁未    13时18分      42      0       丙午       0 子时      闰十一月      正北
癸亥      10      尚章大淵獻      1  10      甲子   1  甲子   37      869      辛丑    22时11分      47      8       辛亥       6 卯时            正东
甲子      11      焉逢困敦      1  11      甲子   1  甲子   1      776      乙丑    19时48分      52      16       丙辰       12 午时      闰八月      正南
乙丑      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  甲子   14      439      戊寅    11时12分      8      8       壬申       6 卯时      闰四月      正东
戊辰      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  甲子   27      102      辛卯    2时36分      24      0       戊子       0 子时      闰正月      正北
辛未      18      昭陽協洽      1  18      甲子   1  甲子   21      450      乙酉    11时29分      29      8       癸巳       6 卯时            正东
壬申      19      橫艾涒灘      1  19      甲子   1  甲子   45      357      己酉    9时6分      34      16       戊戌       12 午时      闰十月      正南
癸酉      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  癸卯   58      20      壬戌    0时30分      50      8       甲寅       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  癸卯   10      623      甲戌    15时54分      6      0       庚午       0 子时      闰三月      正北
己卯      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  癸卯   23      286      丁亥    7时18分      21      24       乙酉       18 酉时      闰十一月      正西
壬午      29      橫艾敦牂      1  29      甲子   2  癸卯   17      634      辛巳    16时11分      27      0       辛卯       0 子时            正北
癸未      30      尚章協洽      1  30      甲子   2  癸卯   41      541      乙巳    13时48分      32      8       丙申       6 卯时      闰八月      正东
甲申      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  癸卯   54      204      戊午    5时12分      48      0       壬子       0 子时      闰四月      正北
丁亥      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  癸卯   6      807      庚午    20时36分      3      24       丁卯       18 酉时      闰正月      正西
庚寅      37      商橫攝提格      1  37      甲子   2  癸卯   1      215      乙丑    5时29分      9      0       癸酉       0 子时            正北
辛卯      38      昭陽單閼      1  38      甲子   2  癸卯   25      122      己丑    3时6分      14      8       戊寅       6 卯时      闰十月      正东
壬辰      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  癸未   37      725      辛丑    18时30分      30      0       甲午       0 子时      闰六月      正北
乙未      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  癸未   50      388      甲寅    9时54分      45      24       己酉       18 酉时      闰三月      正西
戊戌      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  癸未   3      51      丁卯    1时18分      1      16       乙丑       12 午时      闰十一月      正南
辛丑      48      昭陽赤奮若      1  48      甲子   3  癸未   57      399      辛酉    10时11分      6      24       庚午       18 酉时            正西
壬寅      49      橫艾攝提格      1  49      甲子   3  癸未   21      306      乙酉    7时48分      12      0       丙子       0 子时      闰八月      正北
癸卯      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  癸未   33      909      丁酉    23时12分      27      24       辛卯       18 酉时      闰四月      正西
丙午      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  癸未   46      572      庚戌    14时36分      43      16       丁未       12 午时      闰正月      正南
己酉      56      祝犁作鄂      1  56      甲子   3  癸未   40      920      甲辰    23时29分      48      24       壬子       18 酉时            正西
庚戌      57      商橫淹茂      1  57      甲子   3  癸未   4      827      戊辰    21时6分      54      0       戊午       0 子时      闰十月      正北
辛亥      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  癸亥   17      490      辛巳    12时30分      9      24       癸酉       18 酉时      闰六月      正西
甲寅      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  癸亥   30      153      甲午    3时54分      25      16       己丑       12 午时      闰三月      正南
丁巳      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  癸亥   42      756      丙午    19时18分      41      8       乙巳       6 卯时      闰十一月      正东
庚申      67      商橫涒灘      1  67      甲子   4  癸亥   37      164      辛丑    4时11分      46      16       庚戌       12 午时            正南
辛酉      68      昭陽作鄂      1  68      甲子   4  癸亥   1      71      乙丑    1时48分      51      24       乙卯       18 酉时      闰八月      正西
壬戌      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  癸亥   13      674      丁丑    17时12分      7      16       辛未       12 午时      闰四月      正南
乙丑      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  癸亥   26      337      庚寅    8时36分      23      8       丁亥       6 卯时      闰正月      正东
戊辰      75      徒維執徐      1  75      甲子   4  癸亥   20      685      甲申    17时29分      28      16       壬辰       12 午时            正南
己巳      76      祝犁大荒落      1  76      甲子   4  癸亥   44      592      戊申    15时6分      33      24       丁酉       18 酉时      闰十月      正西
庚午      77      商橫敦牂      2  1      癸卯   5  癸卯   39      0      癸卯    0时0分      39      0       癸卯       0 子时            正北

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值