去年一天,一个朋友去看望病人回来就惊奇的告诉我,他发现和他朋友一起住院(肝胆科)的病人无一例外都是属相为虎的病人,不是大一轮就是小一轮的。这是为什么呢?
这不是什么偶然,也不是什么巧合。也许通过八字能告诉我们这些,也许通过预测能告诉他们应该早点检查肝胆,这样就能找点发现疾病。
一直上网发现有人出软妹币求八字易经排盘系统方法或者源代码,更有此类软件竟要收费上百元。
我上网查找半天也没有具体八字易经排盘系统原理的文章。
排盘如同武学中的马步,拳法,是基础中的基础。
经过几天努力我把整个八字排盘系统开发以及讲述清楚了。
希望大家喜欢
这是最终效果:
run:
请输入你的年月日时间类似 2013-3-14 20
输入的是:2013-3-15 15
2013-3-15 15
此人农历的日期【二零一三年二月初四】
此人的农历生肖【蛇】
此人八字【癸巳 乙卯 庚辰 癸未】
年柱:天乙 太极 天罗 劫煞
月柱:天乙 文昌 灾煞 吊客
日柱:十恶大败日 国印 华盖 天喜 天罗 寡宿
时柱:空亡 丧门
此人四柱干支十神
伤官 正财 日主 伤官
此人年藏干
丙 七杀 庚 比肩 戊 偏印
此人月藏干
乙 正财
此人日藏干
癸 伤官 乙 正财 戊 偏印
此人时藏干
乙 正财 丁 正官 己 正印
此人大运
甲寅 癸丑 壬子 辛亥 庚戌 己酉 戊申 丁未
此人起大运周岁:
3岁
此人大运生旺死绝
绝 墓 死 病 衰 帝旺 临官 冠带
此人大运十神
偏财 伤官 食神 劫财 比肩 正印 偏印 正官
此人大运神煞
天乙 月德 驿马 吊客 披麻 华盖 披麻 将星 文昌 驿马 金舆 红鸾 元辰 将星 羊刃 空亡 咸池 太极 天德 国印 禄 空亡 空亡 丧门
此人流年
2014甲午 神煞:天乙 月德 空亡 咸池 丧门
2015乙未 神煞:空亡 丧门
2016丙申 神煞:太极 天德 国印 禄 空亡
2017丁酉 神煞:将星 羊刃 空亡 咸池
2018戊戌 神煞:金舆 红鸾 元辰
2019己亥 神煞:文昌 驿马
2020庚子 神煞:将星
2021辛丑 神煞:华盖 披麻
2022壬寅 神煞:天乙 驿马 吊客 披麻
2023癸卯 神煞:天乙 文昌 吊客
2024甲辰 神煞:月德 国印 华盖 天喜 天罗
2025乙巳 神煞:天乙 太极 天罗
2026丙午 神煞:天乙 空亡 咸池 丧门
2027丁未 神煞:空亡 丧门
2028戊申 神煞:太极 天德 国印 禄 空亡
2029己酉 神煞:将星 羊刃 空亡 咸池
2030庚戌 神煞:金舆 红鸾 元辰
2031辛亥 神煞:文昌 驿马
2032壬子 神煞:将星
2033癸丑 神煞:华盖 披麻
2034甲寅 神煞:天乙 月德 驿马 吊客 披麻
2035乙卯 神煞:天乙 文昌 吊客
2036丙辰 神煞:国印 华盖 天喜 天罗
2037丁巳 神煞:天乙 太极 天罗
2038戊午 神煞:天乙 空亡 咸池 丧门
2039己未 神煞:空亡 丧门
2040庚申 神煞:太极 天德 国印 禄 空亡
2041辛酉 神煞:将星 羊刃 空亡 咸池
2042壬戌 神煞:金舆 红鸾 元辰
2043癸亥 神煞:文昌 驿马
2044甲子 神煞:月德 将星
2045乙丑 神煞:华盖 披麻
2046丙寅 神煞:天乙 驿马 吊客 披麻
2047丁卯 神煞:天乙 文昌 吊客
2048戊辰 神煞:国印 华盖 天喜 天罗
2049己巳 神煞:天乙 太极 天罗
2050庚午 神煞:天乙 空亡 咸池 丧门
2051辛未 神煞:空亡 丧门
2052壬申 神煞:太极 天德 国印 禄 空亡
2053癸酉 神煞:将星 羊刃 空亡 咸池
2054甲戌 神煞:月德 金舆 红鸾 元辰
2055乙亥 神煞:文昌 驿马
2056丙子 神煞:将星
2057丁丑 神煞:华盖 披麻
2058戊寅 神煞:天乙 驿马 吊客 披麻
2059己卯 神煞:天乙 文昌 吊客
2060庚辰 神煞:国印 华盖 天喜 天罗
2061辛巳 神煞:天乙 太极 天罗
2062壬午 神煞:天乙 空亡 咸池 丧门
2063癸未 神煞:空亡 丧门
2064甲申 神煞:太极 天德 月德 国印 禄 空亡
2065乙酉 神煞:将星 羊刃 空亡 咸池
2066丙戌 神煞:金舆 红鸾 元辰
2067丁亥 神煞:文昌 驿马
2068戊子 神煞:将星
2069己丑 神煞:华盖 披麻
2070庚寅 神煞:天乙 驿马 吊客 披麻
2071辛卯 神煞:天乙 文昌 吊客
2072壬辰 神煞:国印 华盖 天喜 天罗
2073癸巳 神煞:天乙 太极 天罗
2074甲午 神煞:天乙 月德 空亡 咸池 丧门
2075乙未 神煞:空亡 丧门
2076丙申 神煞:太极 天德 国印 禄 空亡
2077丁酉 神煞:将星 羊刃 空亡 咸池
2078戊戌 神煞:金舆 红鸾 元辰
2079己亥 神煞:文昌 驿马
2080庚子 神煞:将星
2081辛丑 神煞:华盖 披麻
2082壬寅 神煞:天乙 驿马 吊客 披麻
2083癸卯 神煞:天乙 文昌 吊客
2084甲辰 神煞:月德 国印 华盖 天喜 天罗
2085乙巳 神煞:天乙 太极 天罗
2086丙午 神煞:天乙 空亡 咸池 丧门
2087丁未 神煞:空亡 丧门
2088戊申 神煞:太极 天德 国印 禄 空亡
2089己酉 神煞:将星 羊刃 空亡 咸池
2090庚戌 神煞:金舆 红鸾 元辰
2091辛亥 神煞:文昌 驿马
2092壬子 神煞:将星
2093癸丑 神煞:华盖 披麻
此人婚姻神煞:
此人农历的日期【二零一三年二月初四】
此人八字【癸巳,乙卯,庚辰,癸未】
此人的农历生肖【蛇】
此人犯狼籍
成功构建 (总时间: 15 秒)
排八字四柱,五行,十神,四柱神煞
大运,大运神煞
流年,流年神煞
婚姻神煞
每一个知识点都在这几篇文章讲述清楚了,代码里面该注释都有了
建议初学者按顺序学习
如果对八字有了解,只是为了看看代码,那么可以随意浏览
八字易经算法之用JAVA实现排大运
八字易经算法之用JAVA实现生旺死绝和十神
八字易经算法之用JAVA实现排八字神煞
Java 计算节气的类
八字易经算法之用JAVA实现 地藏十神排法
合婚算法之用JAVA实现简单级别的神煞合婚法
八字神煞合婚算法,看看自己中了几枪
其他辅助文章:
JAVA计算真太阳时和地方时间
用JAVA实现串宫压运(串宫大法)排盘
八字易经算法之用JAVA实现最简单的称骨算命法
八字易经算法之用JAVA实现最简单的批八字算命
合婚算法之用JAVA实现本命卦合婚法
合婚算法之用JAVA实现呂才合婚法
最后要谈一个大问题就是怎么起四柱:
很多地方都是按照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
你试试看这个日期 1961年3月15日
你看看其他算法输出八字和书本万年历对么?
为什么月柱不对呢?
答:很多算法都是根据阳历转换没有考虑节气。
一般节气过了就算下个月
所以上面文章的月柱算不对
正确代码用Java 计算节气的类 算法来排月柱
本系统完整源代码:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package luozhuangpaipan;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.util.Calendar;
import luozhuangChineseEra.Lunar;
import luozhuanghehun.BaZi;
import luozhuanghehun.LuozhuangshenshaHehun;
import luozhuanghehun.luozhuanglvhehun;
/**完整排盘系统
*
* @author luozhuang 大师♂罗莊
*/
public class LuozhuangPaipanClass {
LuozhuangshenshaHehun myLuozhuangshenshaHehun = new LuozhuangshenshaHehun();
luozhuanglvhehun myluozhuanglvhehun = new luozhuanglvhehun();
Luozhuangpaipandayun myLuozhuangpaipandayun = new Luozhuangpaipandayun();
LuozhuangshengSha myLuozhuangshengSha = new LuozhuangshengSha();
luozhuangpaipanshisheng myluozhuangpaipanshisheng = new luozhuangpaipanshisheng();
Luozhuangdizhang myLuozhuangdizhang = new Luozhuangdizhang();
/**
*
* @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);
}
public String paipan(Calendar cal, luozhuanglvhehun.sex isman) throws ParseException {
BaZi lunar = new BaZi(cal);
Lunar lunaryue = new Lunar(cal.getTime());
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.animalsYear() + "】");
String GanZhi = lunar.getYearGanZhi(time);//取八字
String[] tempchar = GanZhi.split(",");
//我修改原来的,用,分割
String ganziyear = lunaryue.getCyclicaYear();//年柱
String ganzimonth = lunaryue.getCyclicaMonth();//月柱
String ganziday = lunaryue.getCyclicaDay();//日柱
String ganzitime = tempchar[3];//时柱
System.out.println("此人八字【" + ganziyear + " " + ganzimonth + " " + ganziday + " " + ganzitime + "】");
String[] arrayOfString = new String[9];
arrayOfString[0] = "";
arrayOfString[1] = ganziyear.substring(0, 1);//年干
arrayOfString[2] = ganziyear.substring(1, 2);//年支
arrayOfString[3] = ganzimonth.substring(0, 1);//月干
arrayOfString[4] = ganzimonth.substring(1, 2);//月支
arrayOfString[5] = ganziday.substring(0, 1);//日干
arrayOfString[6] = ganziday.substring(1, 2);//日支
arrayOfString[7] = ganzitime.substring(0, 1);//时干
arrayOfString[8] = ganzitime.substring(1, 2);//时支
System.out.println(myLuozhuangshengSha.shengsha(arrayOfString, isman));
//排食神生旺死绝
//用日干 日支分别查找位于表的对应值
//修改原文的类方法字段属性为public
//我的表格均是按照顺序比如
//十天干生旺死绝表 十神概念按顺序排列
//查找某一行就可以查到对应值
String[] shengsibiao = {"甲", "丙", "戊", "庚", "壬", "乙", "丁", "己", "辛", "癸"};//十天干生旺死绝表顺序
//十天干生旺死绝表 用日干查表
int shengsibiaoshunxu = myLuozhuangpaipandayun.getyuezhuStart(shengsibiao, ganziday.substring(0, 1));
//十神表按顺序
int shishengbiaoshunxu = myLuozhuangpaipandayun.getyuezhuStart(BaZi.Gan, ganziday.substring(0, 1));
shengsibiaoshunxu++;
shishengbiaoshunxu++;
String[] DayunArray = myLuozhuangpaipandayun.Dayun(ganziyear, ganzimonth, isman);
//排此人四柱十神生旺死绝
// 比 印 日元 劫 <- 这里直接用四柱干支计算
//乾造 庚 己 庚 辛
// 辰 卯 午 巳
//藏干 乙戊癸 乙 己丁 庚丙戊 <- 这里直接用藏干计算
// 才枭伤 才 印官 比杀枭 <- 这里直接用藏干计算
//地势 养 胎 沐浴 长生 <- 藏干不算生旺死绝
//纳音 白蜡金 城墙土 路旁土 白蜡金
System.out.println("此人四柱干支十神");
System.out.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], ganziyear.substring(0, 1))]); //十神表 用支查表
System.out.print(" ");
System.out.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], ganzimonth.substring(0, 1))]); //十神表 用支查表
System.out.print(" ");
System.out.print("日主"); //日柱不计算!
System.out.print(" ");
System.out.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], ganzitime.substring(0, 1))]); //十神表 用支查表
System.out.println("");
System.out.println("此人年藏干");
String[] zhanggan = LuozhuangcommonClass.dizhuang(ganziyear.substring(1, 2));
for (int i = 0; i < zhanggan.length; i++) {
if (zhanggan[i] == null) {
continue;
}
System.out.print(zhanggan[i]);
System.out.print(" ");
System.out.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表
System.out.print(" ");
}
System.out.println("");
zhanggan = LuozhuangcommonClass.dizhuang(ganzimonth.substring(1, 2));
System.out.println("此人月藏干");
for (int i = 0; i < zhanggan.length; i++) {
if (zhanggan[i] == null) {
continue;
}
System.out.print(zhanggan[i]);
System.out.print(" ");
System.out.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表
System.out.print(" ");
}
System.out.println("");
System.out.println("此人日藏干");
zhanggan = LuozhuangcommonClass.dizhuang(ganziday.substring(1, 2));
for (int i = 0; i < zhanggan.length; i++) {
if (zhanggan[i] == null) {
continue;
}
System.out.print(zhanggan[i]);
System.out.print(" ");
System.out.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表
System.out.print(" ");
}
System.out.println("");
System.out.println("此人时藏干");
zhanggan = LuozhuangcommonClass.dizhuang(ganzitime.substring(1, 2));
for (int i = 0; i < zhanggan.length; i++) {
if (zhanggan[i] == null) {
continue;
}
System.out.print(zhanggan[i]);
System.out.print(" ");
System.out.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表
System.out.print(" ");
}
String[] DayunArrayshengsi = new String[DayunArray.length];//大运十天干生旺死绝表
String[] DayunArrayshisheng = new String[DayunArray.length];//大运十神表
for (int i = 0; i < DayunArray.length; i++) {
DayunArrayshengsi[i] = myluozhuangpaipanshisheng.shengwang[0][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shengwang[shengsibiaoshunxu], DayunArray[i].substring(1, 2))]; //十天干生旺死绝表 用干查表
DayunArrayshisheng[i] = myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], DayunArray[i].substring(0, 1))]; //十神表 用支查表
}
System.out.println("此人大运");
myLuozhuangpaipandayun.pringst(DayunArray);
System.out.println("此人起大运周岁:");
System.out.println(myLuozhuangdizhang.dayunkaishi(cal, ganziyear.substring(0,1), isman)+ "岁");
System.out.println("此人大运生旺死绝");
myLuozhuangpaipandayun.pringst(DayunArrayshengsi);
System.out.println("此人大运十神");
myLuozhuangpaipandayun.pringst(DayunArrayshisheng);
String[] DayunArrayshengsha = new String[DayunArray.length];
for (int i = 0; i < DayunArray.length; i++) {
DayunArrayshengsha[i] = myLuozhuangshengSha.shengshadayun(DayunArray[i], arrayOfString, isman);
}
System.out.println("此人大运神煞");
myLuozhuangpaipandayun.pringst(DayunArrayshengsha);
System.out.println("此人流年");
int[] liunianarray = new int[80];
int start = lunar.getnumberYear();
start++;
for (int i = 0; i < liunianarray.length; i++) {
liunianarray[i] = start + i;
}
myLuozhuangpaipandayun.pringst(myLuozhuangshengSha.liunianshensha(liunianarray, arrayOfString, isman));
System.out.println("此人婚姻神煞:");
LuozhuangshenshaHehun myLuozhuangshenshaHehun = new LuozhuangshenshaHehun();
System.out.println(myLuozhuangshenshaHehun.shensha(cal));
return null;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws ParseException, IOException {
LuozhuangPaipanClass my = new LuozhuangPaipanClass();
System.out.println("请输入你的年月日时间类似 2013-3-14 20");
BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
String a = strin.readLine();
System.out.println("输入的是:" + a);
my.paipan(a, luozhuanglvhehun.sex.man);
}
}