猛禽的河蟹BLOG

--一个无学位、无户口、无RP的犬儒主义中年大叔

版权

Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
raptor.zh(at)gmail.com

存档

2009年7月
2009年4月
2009年3月
2009年2月
2009年1月
2008年12月
2008年11月
2008年10月
2008年9月
2008年8月
2008年7月
2008年6月
2008年5月
2008年4月
2008年3月
2008年2月
2008年1月
2007年12月
2007年11月
2007年10月
2007年9月
2007年8月
2007年7月
2007年6月
2007年5月
2007年4月
2007年3月
2007年2月
2007年1月
2006年12月
2006年11月

分类



链接

微笑图书室 多背一公斤

A0.八卦帮

A1.八卦帮众

A2.个人八卦

B1.友情链接

ADS.友情广告

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

版权声明:可以任意转载,
转载时请务必以超链接形式标明
文章原始出处和作者信息及本声明。

— | by : 猛禽

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

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

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

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

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

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

使用注意事项:

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

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

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

1.技术八卦 | 2007-10-24 09:38

Trackback link:

Please enable javascript to generate a trackback url

跟踪

评论(8)

清越 :

此程序有没有算八字合不合的功能?

- 2007-10-25 08:59

猛禽 (URL) :

我还不知道那个要怎么算,可以考虑以后学会后加入。

- 2007-10-25 09:18

清越 :

赶紧学。

- 2007-10-25 17:55

smjj :

想知道怎么用这个计算程序。。

- 2007-10-26 11:17

猛禽 (URL) :

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

- 2007-10-26 13:42

smjj :

这个。。应该叫用法比较麻烦吧(对偶来说)...

不如等大叔把八字配对也研究出来后 直接给大叔算得了。。吼吼~

- 2007-10-27 13:00

haitao (URL) :

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

- 2007-10-27 16:40

路过 :

你好,我仔细读了你的代码,一个问题求教:

你有几个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]

- 2007-12-14 10:18


 
 
  表情图标 

 本站启用了防垃圾评论的脚本,如果发现不能发表评论,可能是因为脚本未能正常下载或执行,请刷新页面后再试。
记住我?

提示: 除了 <b> 和 <i> 之外,其他的Html标签都将从您的评论中去除.url或mail地址会被自动加上链接.