序:一直上网发现有人出软妹币求八字易经排盘系统方法或者源代码,更有此类软件竟要收费上百元。
比如:http://bbs.csdn.net/topics/220008904
我上网查找半天也没有具体八字易经排盘系统原理的文章。
排盘如同武学中的马步,拳法,是基础中的基础。
作为易学高手的我(大师♂罗莊)对告诉各位码农如何八字易经排盘系统 负有不可推卸的责任。
我就细细说怎么排大运
首先是八字基础
天干
甲乙丙丁戊己庚辛壬癸
甲、丙、戊、庚、壬为阳;乙、丁、己、辛、癸为阴
地支
子丑寅卯辰巳午未申酉戌亥
子、寅、辰、午、申、戌为阳支;丑卯巳未酉亥为阴支
八字:是由“年干,年支”、“月干,月支”、“日干,日支”、“时干,时支”组成
每一个组合称为“柱”,形成“年柱”、“月柱”、“日柱”、“时柱”,故八字又称为“四柱”或“四柱八字”
庚 己 庚 辛(日空戌、亥)
辰 卯 午 巳
排列方法成为:
年干 月干 日干 时干
年支 月支 日支 时支
有关如何用程序取出八字以前已经谈过
不再叙述
旧文章BUG勘误:
很多地方都是按照23:00-1:00为子时这是不对的。
子时24.00-2.00,丑时2.00-4.00,寅时4.00-6.00,卯时6.00-8.00,
辰时8.00-10.00,巳时10.00-12.00,午时12.00-14.00,未时14.00-16.00
申时16.00-18.00,酉时18.00-20.00,戌时20.00-22.00,亥时22.00-24.00
今天我写代码才发现原来那个类没有修改
用JAVA 取时柱算法:
int time = cal.get(Calendar.HOUR_OF_DAY) / 2;
然后取子=0 丑=1就可以了
涉及到修改类:
BaZi.getYearGanZhi
h=Gan[(offset+hour-1)%10]+Zhi[hour-1];
改为
h=Gan[(offset+hour)%10]+Zhi[hour];
排大运:
阳男阴女顺排,阴男阳女逆排。(所谓阳年阴年,是指四柱中年干的阴阳而言,如甲、丙、戊、庚、壬之年为阳,乙、丁、己、辛、癸之年为阴。)
顺序按照
60甲子:
01 甲子 11 甲戌 21 甲申 31 甲午 41 甲辰 51 甲寅
02 乙丑 12 乙亥 22 乙酉 32 乙未 42 乙巳 52 乙卯
03 丙寅 13 丙子 23 丙戌 33 丙申 43 丙午 53 丙辰
04 丁卯 14 丁丑 24 丁亥 34 丁酉 44 丁未 54 丁巳
05 戊辰 15 戊寅 25 戊子 35 戊戌 45 戊申 55 戊午
06 己巳 16 己卯 26 己丑 36 己亥 46 己酉 56 己未
07 庚午 17 庚辰 27 庚寅 37 庚子 47 庚戌 57 庚申
08 辛未 18 辛巳 28 辛卯 38 辛丑 48 辛亥 58 辛酉
09 壬申 19 壬午 29 壬辰 39 壬寅 49 壬子 59 壬戌
10 癸酉 20 癸未 30 癸巳 40 癸卯 50 癸丑 60 癸亥
比如上面那个八字
庚年为阳,男孩子要顺排,己卯之后便是庚辰 辛巳 壬午 癸未 甲申 乙酉 丙戌 丁亥
会了么?
上代码吧:
引用到的类代码位置:
luozhuanghehun.LuozhuangshenshaHehun 位于
合婚算法之用JAVA实现简单级别的神煞合婚法
luozhuanglvhehun位于:
合婚算法之用JAVA实现呂才合婚法
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package luozhuangpaipan;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import luozhuanghehun.BaZi;
import luozhuanghehun.LuozhuangshenshaHehun;
import luozhuanghehun.luozhuanglvhehun;
/**
*排大运
* @author luozhuang 大师♂罗莊
*/
public class Luozhuangpaipandayun {
LuozhuangshenshaHehun myLuozhuangshenshaHehun = new LuozhuangshenshaHehun();
luozhuanglvhehun myluozhuanglvhehun = new luozhuanglvhehun();
/**
*
* @param man 生日 yyyy-MM-dd HH
* @return 返回乾造
* @throws ParseException
*/
public String paipan(String man, luozhuanglvhehun.sex isman) throws ParseException {
Calendar mancal;
try {
mancal = myLuozhuangshenshaHehun.getCalendarfromString(man, "yyyy-MM-dd HH");
//原来的private 方法改了下
} catch (ParseException ex) {
return "输入不正确" + ex.getMessage();
}
return paipan(mancal, isman);
}
/**找数组中月柱起始位置
*
* @param jiazhi
* @param yuezhu
* @return
*/
public int getyuezhuStart(String[] jiazhi, String yuezhu) {
int start = -1;
for (int i = 0; i < jiazhi.length; i++) {
if (yuezhu.equals(jiazhi[i])) {
start = i;
break;
}
}
return start;
}
//顺行排大运
private String[] shundayun(String yuezhu) {
String[] DayunStringArray = new String[8];//取八个
String[] jiazhi = myluozhuanglvhehun.jiazhi;
int start = getyuezhuStart(jiazhi, yuezhu);
if (start == -1) {
return null;
}
else
{
start++;
}
for (int i = 0; i < 8; i++) {
DayunStringArray[i] = jiazhi[(start + i) % jiazhi.length];
}
return DayunStringArray;
}
//逆行排大运
private String[] nidayun(String yuezhu) {
String[] DayunStringArray = new String[8];//取八个
String[] jiazhi = myluozhuanglvhehun.jiazhi;
int start = getyuezhuStart(jiazhi, yuezhu);
if (start == -1) {
return null;
}
else
{
start--;
}
for (int i = 0; i < 8; i++) {
DayunStringArray[i] = jiazhi[(start - i) % jiazhi.length];
}
return DayunStringArray;
}
//大运用月柱排
public String[] Dayun(String nianzhu,String yuezhu, luozhuanglvhehun.sex isman) {
String[] DayunStringArray = null;
if (yuezhu == null || yuezhu.length() != 2) {
return null;
}
//甲、丙、戊、庚、壬之年为阳,乙、丁、己、辛、癸之年为阴
//阴年生男子(或阳年生女子),大运逆行否则顺行
if (nianzhu.startsWith("甲") || nianzhu.startsWith("丙") || nianzhu.startsWith("戊") || nianzhu.startsWith("庚") || nianzhu.startsWith("庚") || nianzhu.startsWith("壬")) {
if (isman == luozhuanglvhehun.sex.man) {//顺行
DayunStringArray= shundayun(yuezhu);
} else {
DayunStringArray=nidayun(yuezhu);
}
} else {
if (isman == luozhuanglvhehun.sex.man) {
DayunStringArray= nidayun(yuezhu);
} else {
DayunStringArray=shundayun(yuezhu);
}
}
return DayunStringArray;
}
private String paipan(Calendar cal, luozhuanglvhehun.sex isman) throws ParseException {
BaZi lunar = new BaZi(cal);
System.out.println("此人农历的日期【" + lunar.toString() + "】");
/**
* 很多地方都是按照23:00-1:00为子时这是不对的。
* 子时24.00-2.00,丑时2.00-4.00,寅时4.00-6.00,卯时6.00-8.00,
* 辰时8.00-10.00,巳时10.00-12.00,午时12.00-14.00,未时14.00-16.00
* 申时16.00-18.00,酉时18.00-20.00,戌时20.00-22.00,亥时22.00-24.00
*
*/
int time = cal.get(Calendar.HOUR_OF_DAY) / 2;
System.out.println("此人八字【" + lunar.getYearGanZhi(time) + "】");
//获取生肖
System.out.println("此人的农历生肖【" + lunar.animalsYear() + "】");
String GanZhi = lunar.getYearGanZhi(time);//取八字
String[] tempchar = GanZhi.split(",");
//我修改原来的,用,分割
String ganziyear = tempchar[0];//年柱
String ganzimonth = tempchar[1];//月柱
String ganziday = tempchar[2];//日柱
String ganzitime = tempchar[3];//时柱
//五行纳音
String soundyear = myLuozhuangshenshaHehun.getnumsix(ganziyear);
String soundmonth = myLuozhuangshenshaHehun.getnumsix(ganzimonth);
String soundday = myLuozhuangshenshaHehun.getnumsix(ganziday);
String soundtime = myLuozhuangshenshaHehun.getnumsix(ganzitime);
String[] DayunArray = Dayun(ganziyear,ganzimonth, isman);
pringst(DayunArray);
return null;
}
public static void pringst(String[] res) {
for (int i = 0; i < res.length; i++) {
System.out.print(res[i]);
System.out.print(" ");
}
System.out.println("");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws ParseException {
Luozhuangpaipandayun my=new Luozhuangpaipandayun();
my.paipan("2000-3-13 11", luozhuanglvhehun.sex.man);
}
}