八字易经算法之用JAVA实现通勝十二建择日算法

一直上网发现有人求万年历上吉凶日/择日算法或者源代码,更有此类软件竟要收费几十元。

  我上网查找半天也没有具体原理的文章。
  作为易学高手的我(大师♂罗莊)对告诉各位码农如何制作吉凶日/择日算法  负有不可推卸的责任。

  今天开的课程就是通勝十二建择日算法
  这个算法很多老黄历在用

  基础课程文章:八字易经算法之用JAVA实现简单择日算法

/*
 * 简单的通勝十二建选择日子实现
 *@author luozhuang 大师♂罗莊
 */
package dayselcet;

import java.text.ParseException;

import luozhuanghehun.BaiziRecord;

/**
 *
 * @author luozhuang
 */
public class luozhuangshierjian {

    /**
     * 通勝十二建判断可以做什么不可以做什么
     *
     * @param shierjianString 通勝十二建字符串
     */
    public String cando="";
    public String canotdo="";;
    /**
     * 月支日支	一月寅节	二月卯节	三月辰节	四月巳节	五月午节	六月未节	七月申节	八月酉节	九月戍节	十月亥节	十一子节	十二丑节 子	开	收	成
     * 危	破	执	定	平	满	除	建	闭 丑	闭	开	收	成	危	破	执	定	平	满	除	建 寅	建	闭	开	收	成	危	破	执	定	平	满	除 卯	除
     * 建	闭	开	收	成	危	破	执	定	平	满 辰	满	除	建	闭	开	收	成	危	破	执	定	平 巳	平	满	除	建	闭	开	收	成	危	破	执	定
     * 午	定	平	满	除	建	闭	开	收	成	危	破	执 未	执	定	平	满	除	建	闭	开	收	成	危	破 申	破	执	定	平	满	除	建	闭	开	收
     * 成	危 酉	危	破	执	定	平	满	除	建	闭	开	收	成 戍	成	危	破	执	定	平	满	除	建	闭	开	收 亥	收	成	危	破	执	定	平	满
     * 除	建	闭	开
     *
     *
     */
    String[][] data = {{"开", "收", "成", "危", "破", "执", "定", "平", "满", "除", "建", "闭"},
        {"闭", "开", "收", "成", "危", "破", "执", "定", "平", "满", "除", "建"},
        {"建", "闭", "开", "收", "成", "危", "破", "执", "定", "平", "满", "除"},
        {"除", "建", "闭", "开", "收", "成", "危", "破", "执", "定", "平", "满"},
        {"满", "除", "建", "闭", "开", "收", "成", "危", "破", "执", "定", "平"},
        {"平", "满", "除", "建", "闭", "开", "收", "成", "危", "破", "执", "定"},
        {"定", "平", "满", "除", "建", "闭", "开", "收", "成", "危", "破", "执"},
        {"执", "定", "平", "满", "除", "建", "闭", "开", "收", "成", "危", "破"},
        {"破", "执", "定", "平", "满", "除", "建", "闭", "开", "收", "成", "危"},
        {"危", "破", "执", "定", "平", "满", "除", "建", "闭", "开", "收", "成"},
        {"成", "危", "破", "执", "定", "平", "满", "除", "建", "闭", "开", "收"},
        {"收", "成", "危", "破", "执", "定", "平", "满", "除", "建", "闭", "开"},};
    String[] shengxiao = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戍", "亥"};

    public String getshierjian(int mouth, String rizhi) {
        if (mouth < 1 || mouth > 12) {
            return null;
        }
        int riziindex = getarrayindex(shengxiao, rizhi);
        return data[riziindex][mouth - 1];
    }

    public int getarrayindex(String[] array, String target) {
        for (int i = 0; i < array.length; i++) {
            if (array[i].equals(target)) {
                return i;
            }
        }
        return -1;
    }

    /**
     *通胜十二建 
建、除、满、平、定、执、破、危、成、收、开、闭。 吉日:红白二事皆宜的日子。 
成日:成功、天帝纪万物成就的大吉日子,凡事皆顺。  宜:结婚、开市、修造、动土、安床、破土、安葬、搬迁、    交易、求财、出行、立契、竖柱、裁种、牧养。  忌:诉讼。 
收日:收成、收获,天帝宝库收纳的日子。 
 宜:祈福、求嗣、赴任、嫁娶、安床、修造、动土、    求学、开市、交易、买卖、立契。  忌:放债、新船下水、新车下地、破土、安葬。 开日:开始、开展的日子。 
 宜:祭祀、祈福、入学、上任、修造、动土、    开市、安床、交易、出行、竖柱。  忌:放债、诉讼、安葬。 次吉:吉日后,退而求其次的日子。 建日:万物生育、强健、健壮的日子。 
 宜:赴任、祈福、求嗣、破土、安葬、修造、上梁、求财、    置业、入学、考试、结婚、动土、签约、交涉、出行。 
 忌:动土、开仓、掘井、乘船、新船下水、新车下地、维修水电器具。 除日:扫除恶煞、去旧迎新的日子。 
 宜:祭祀、祈福、婚姻、出行、入伙、搬迁、出货、动土、求医、交易。  忌:结婚、赴任、远行、签约。 满日:丰收、美满、天帝宝库积满的日子。 
 宜:嫁娶、祈福、移徙、开市、交易、求财、立契、祭祀、出行、牧养。  忌:造葬、赴任、求医。 平日:普通的日子。 
平日:平常、官人集合平分的日子。 
 宜:嫁娶、修造、破土、安葬、牧养、开市、安床、动土、求嗣。  忌:祈福、求嗣、赴任、嫁娶、开市、安葬。 定日:安定、平常、天帝众客定座的日子。 
 宜:祭祀、祈福、嫁娶、造屋、装修、修路、开市、入学、上任、入伙。  忌:诉讼、出行、交涉。 
凶日:诸事不宜,最好避之则吉,喜事更可免则免。 
执日:破日之从神,曰小耗,天帝执行万物赐天福,较差的日子。  宜:造屋、装修、嫁娶、收购、立契、祭祀。  忌:开市、求财、出行、搬迁。
* 破日:日月相冲,曰大耗,斗柄相冲相向必破坏的日子,大事不宜。  宜:破土、拆卸、求医。 
 忌:嫁娶、签约、交涉、出行、搬迁。 危日:危机、危险,诸事不宜的日子。  宜:祭祀、祈福、安床、拆卸、破土。  忌:登山、乘船、出行、嫁娶、造葬、迁徙。 
闭日:十二建中最后一日,关闭、收藏、天地阴阳闭寒的日子。  宜:祭祀、祈福、筑堤、埋池、埋穴、造葬、填补、修屋。  忌:开市、出行、求医、手术、嫁娶。
     * @param shierjianString 通胜十二建字符串
     */
    public void shierxingjianpanduan(String shierjianString) {
        if (shierjianString.equals("建")) {
            cando += "出行 ";
            canotdo += "开仓 ";
        }
        if (shierjianString.equals("除")) {
            cando += "服药 针灸 ";
        }
        if (shierjianString.equals("满")) {
            cando += "开市 ";
            canotdo += "服药 ";
        }
        if (shierjianString.equals("平")) {
            cando += "涂泥 ";
        }
        if (shierjianString.equals("定")) {
            cando += "纳畜 入学 ";
        }
        if (shierjianString.equals("执")) {
            cando += "捕捉 ";
        }
        if (shierjianString.equals("破")) {
            cando += "治病 ";
        }
        if (shierjianString.equals("危")) {
            cando += "捕鱼 ";
            canotdo += "行船 ";
        }
        if (shierjianString.equals("成")) {
            cando += "入学 ";
            canotdo += "诉讼 ";
        }
        if (shierjianString.equals("收")) {
            cando += "纳财 ";
            canotdo += "安葬 ";
        }
        if (shierjianString.equals("开")) {
            cando += "求仕 ";
            canotdo += "安葬 ";
        }
        if (shierjianString.equals("闭")) {
            cando += "安床 ";
            canotdo += "治目 ";
        }


        if (shierjianString.equals("建")) {
            cando += "裁衣 纳财 交易 出行 竖柱 ";
            canotdo += "乘船 开仓 动土 ";
        }
        if (shierjianString.equals("除")) {
            cando += "沐浴 清洁 服药 ";
            canotdo += "婚礼 出行 开井 ";
        }
        if (shierjianString.equals("满")) {
            cando += "造作 婚礼 旅行 ";
            canotdo += "种植 开井 ";
        }
        if (shierjianString.equals("平")) {
            cando += "婚礼 出行 修道 涂泥 ";
            canotdo += "种植 掘沟 开井 ";
        }
        if (shierjianString.equals("定")) {
            cando += "宴饮 协议 种植 造作 婚礼 旅行 动土 开井 ";
            canotdo += "治病 诉讼 出师 ";
        }
        if (shierjianString.equals("执")) {
            cando += "种植 捕捉 造作 开井 婚礼 ";
            canotdo += "出行 开市 开仓 ";
        }
        if (shierjianString.equals("破")) {
            cando += "破垣 出渔 ";
        }
        if (shierjianString.equals("成")) {
            cando += "开市 入学 嫁娶 上官 赴任 婚礼 造作 动土 旅行 ";
            canotdo += "诉讼 ";
        }
        if (shierjianString.equals("收")) {
            cando += "收获 开仓 交易 入学 婚礼 造作 动土 ";
            canotdo += "出行 安葬 针灸 ";
        }
        if (shierjianString.equals("开")) {
            cando += "学艺 就业 婚礼 出行 ";
            canotdo += "安葬 ";
        }
        if (shierjianString.equals("闭")) {
            canotdo += "修造 筑堤 ";
        }
    }
    luozhuangjiandanxuanri my = new luozhuangjiandanxuanri();

    void test(BaiziRecord cal) {
        int intChinesemonth = cal.lunaryue.getLunarMonth();
        int intChineseday = cal.lunaryue.getLunarDay();
        my.println("今天通勝十二建");
        String shierjianstring = getshierjian(intChinesemonth, cal.getganzhiString()[6]);
        my.println(shierjianstring);

        shierxingjianpanduan(shierjianstring);
        my.println("今天宜");
        my.println(cando);

        my.println("今天不宜");
        my.println(canotdo);

    }

    public static void main(String[] args) throws ParseException {

        luozhuangjiandanxuanri myluozhuangjiandanxuanri = new luozhuangjiandanxuanri();
        luozhuangshierjian myluozhuangshierjian = new luozhuangshierjian();
        myluozhuangshierjian.test(myluozhuangjiandanxuanri.getbazi("2013-8-15"));

    }
}

结果:

run:
农历的日期【二零一三年七月初九】  
  
农历生肖【蛇】  
  
       
  
八字:  
  
     癸巳     庚申     癸丑     壬子       
  
农历日期:  
  
     2013     7     9  
  
农历日期:  
  
     初九  
  
今天通勝十二建  
  
执  
  
今天宜  
  
捕捉 种植 捕捉 造作 开井 婚礼   
  
今天不宜  
  
出行 开市 开仓   
  
成功构建 (总时间: 0 秒)


你可能感兴趣的:(八字易经算法之用JAVA实现通勝十二建择日算法)