一直上网发现有人求万年历上吉凶日/择日算法或者源代码,更有此类软件竟要收费几十元。
我上网查找半天也没有具体原理的文章。
作为易学高手的我(大师♂罗莊)对告诉各位码农如何制作吉凶日/择日算法 负有不可推卸的责任。
今天开的课程就是通勝十二建择日算法
这个算法很多老黄历在用
基础课程文章:八字易经算法之用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 秒)