[小工具]生辰八字计算程序

前几天突然想到要写一个生辰八字的计算程序,当然这个目的是纯属娱乐的。

生辰八字在算命学上称为四柱:年柱,月柱,日柱和时柱。每柱由一对干支组成,共八字,故名生辰八字。本质上就是以干支历法记录的一个人的出生时辰。(以下略去对以这种算命方法是伪科学的科学论证文字1587字)

在说干支历之前要特别提醒大家的一点是:中国的所谓农历并不是阴历,而是一种阴阳历。当我们说农历正月初一时,用的是阴历,以月亮的运行规律制定。当我们说到属相、干支、节气时,用的是阳历,以太阳的运行规律制定。所以说中国的农历本质上是一种相当复杂的历法。

幸好计算四柱只需要用到阳历部分,所以实现起来相对简单一些。

BTW:目前网上常见的一些万年历程序中,干支历的部分大多是错误的。

关于四柱的正确计算方法见《生辰八字计算》一文,本程序就是参考该文写成。

使用注意事项:

1、输入的日期至少要精确到小时,才能得到完整的四柱;

2、如果日期刚好是12节气(24节气中扣除12中气),则最好精确到分钟,否则可能得到错误的月柱。如果刚好碰到立春,则更要精确到分钟,否则不但月柱可能错,连年柱也可能错。

python源程序,基于GPL V2发布(下载:2kBytes,Revision:071018)。

8 Replies to “[小工具]生辰八字计算程序”

  1. 用法比较专业:
    先安装一个Python 2.4+
    然后在命令行运行:fourbar.py yyyymmddhhnn
    比如:fourbar.py 200710261339
    就是计算:2007年10月26日13点39分的四柱,结果为:丁亥 庚戌 癸巳 己未

  2. 这个。。应该叫用法比较麻烦吧(对偶来说)…
    不如等大叔把八字配对也研究出来后 直接给大叔算得了。。吼吼~

  3. 呵呵,delphi做的工具程序的好处就体现处理了。。。。。使用起来根本不用这么麻烦
    记得有过python for delphi的,delphi程序可以直接使用python脚本,只是忘了是不是需要安装python
    如果不需要,则是最好的做法了

  4. 你好,我仔细读了你的代码,一个问题求教:
    你有几个testcase来验证你的程序,其中
    def testYearBar(self) :
    self.fb.borntime=datetime.datetime(2007,2,4,2,4)
    self.assertEqual(self.fb.getYearBar(), u’丙戌’)
    self.fb.borntime=datetime.datetime(2007,2,4,2,6)
    self.assertEqual(self.fb.getYearBar(), u’丁亥’)
    你的意思是2007年立春是2007年的2月4日2时5分吗?
    但是好像应该不是2007年立春的时间是13点14分。请问如何可以得到呢,是不是需要更加精确的
    TermInfo = [0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758]

Leave a Reply

Your email address will not be published. Required fields are marked *