<kbd id="9plqc"><label id="9plqc"></label></kbd>

        <th id="9plqc"></th>
        1. <center id="9plqc"><video id="9plqc"></video></center>
          <sub id="9plqc"><form id="9plqc"><pre id="9plqc"></pre></form></sub>
          <nav id="9plqc"><form id="9plqc"><legend id="9plqc"></legend></form></nav>
          使用Java計算生辰八字五行屬性 您所在的位置:網站首頁 生辰八字推算法 使用Java計算生辰八字五行屬性

          使用Java計算生辰八字五行屬性

          #使用Java計算生辰八字五行屬性| 來源: 網絡整理| 查看: 265

          使用Java計算生辰八字五行屬性 五行八字基本要素天干地支表天干地支對應編號計算公元后某年的干支干支紀月法干支紀日法十二時辰表十二時辰紀日對照表五行干支對照表 五行八字Java實現代碼

          五行八字基本要素 天干地支表 甲乙丙丁戊己庚辛壬癸子鼠甲子丙子戊子庚子壬子丑牛乙丑丁丑己丑辛丑癸丑寅虎甲寅丙寅戊寅庚寅壬寅卯兔乙卯丁卯己卯辛卯癸卯辰龍甲辰丙辰戊辰庚辰壬辰巳蛇乙巳丁巳己巳辛巳癸巳午馬甲午丙午戊午庚午壬午未羊乙未丁未己未辛未癸未申猴甲申丙申戊申庚申壬申酉雞乙酉丁酉己酉辛酉癸酉戌狗甲戌丙戌戊戌庚戌壬戌亥豬乙亥丁亥己亥辛亥癸亥 說明: 天干地支簡稱干支,干支紀年是我國傳統(tǒng)的紀年方法即為天干地支紀年法 十天干分別為:甲乙 丙丁 戊己 庚辛 壬癸十二地支分別為:子丑 寅卯 辰巳 午未 申酉 戌亥干和支組合后用于紀年,將十天干和十二地支按順序搭配組合成干支,用于紀年。按此排法,當天干 10 個符號排了六輪與地支 12 個符號排了五輪以后,可構成 60 干支。續(xù)排下去又將恢復原狀,周而復始,即:“六十年為一個甲子” 天干地支對應編號 甲子 00,乙丑 01,丙寅 02,丁卯 03,戊辰 04,己巳 05,庚午 06,辛未 07,壬申 08,癸酉 09甲戌 10,乙亥 11,丙子 12,丁丑 13,戊寅 14,己卯 15,庚辰 16,辛巳 17,壬午 18,癸未 19甲申 20,乙酉 21,丙戌 22,丁亥 23,戊子 24,己丑 25,庚寅 26,辛卯 27,壬辰 28,癸巳 29甲午 30,乙未 31,丙申 32,丁酉 33,戊戌 34,己亥 35,庚子 36,辛丑 37,壬寅 38,癸卯 39甲辰 40,乙巳 41,丙午 42,丁未 43,戊申 44,己酉 45,庚戌 46,辛亥 47,壬子 48,癸丑 49甲寅 50,乙卯 51,丙辰 52,丁巳 53,戊午 54,己未 55,庚申 56,辛酉 57,壬戌 58,癸亥 59 計算公元后某年的干支

          假設公元后某年為 X 則先用 X 除以 60 得出余數再減去 4,根據所得結果查表中對應的編號即可算出該年的干支

          比如:2020 除以 60 余 40 減去 4 等于 36,對應干支為 庚子年,當 X 除以 60 的余數小于 4 時,需借干支紀年的一個周期 60 再減 4,例如 1983 除以 60 余數為 3,直接減 4 不夠減,加上 60 之后再減 4 等于 59,1983 年為 癸亥年

          干支紀月法 若遇甲或己的年份 ,正月是丙寅;遇上乙或庚之年,正月為戊寅;遇上丙或辛之年,正月為庚寅;遇上丁或壬之年,正月為壬寅;遇上戊或癸之年,正月為甲寅。依照正月之干支,其余月份按干支推算即可 年份正月二月三月四月五月六月七月八月九月十月冬月臘月甲、己丙寅丁卯戊辰己巳庚午辛未壬申癸酉甲戌乙亥丙子丁丑乙、庚戊寅己卯庚辰辛巳壬午癸未甲申乙酉丙戌丁亥戊子己丑丙、辛庚寅辛卯壬辰癸巳甲午乙未丙申丁酉戊戌己亥庚子辛丑丁、壬壬寅癸卯甲辰乙巳丙午丁未戊申己酉庚戌辛亥壬子癸丑戊、癸甲寅乙卯丙辰丁巳戊午己未庚申辛酉壬戌癸亥甲子乙丑 干支紀日法

          從已知日期計算干支紀日的公式為:

          天干 = (4 * C + [C / 4] + 5 * y + [y / 4] + [3 * (M + 1) / 5] + d - 3) % 10

          地支 = (8 * C + [C / 4] + 5 * y + [y / 4] + [3 * (M + 1) / 5] + d + 7 + i) % 12

          注意: [] 里的除法取整即可

          說明如下:

          c 為年份前兩位,比如 2019 年則 c 為 20y 為年份后兩位,比如 2019 年則 y 為 19M 為月份,1 月和 2 月按上一年的 13 月和 14 月來算d 為日數i 奇數月為 0偶數月為 6

          比如計算 2020 年 2 月 9 日的干支日如下:

          天干 = (4 * 20 + 20 / 4 + 5 * 19 + 19 / 4 + 3 * (14 + 1) / 5 + 9 - 3) % 10 = 9 即 壬地支 = (8 * 20 + 20 / 4 + 5 * 19 + 19 / 4 + 3 * (14 + 1) / 5 + 9 + 7 + 6) % 12 = 7 即 午 十二時辰表 時辰時間子時23 - 01丑時01 - 03寅時03 - 05卯時05 - 07辰時07 - 09巳時09 - 11午時11 - 13未時13 - 15申時15 - 17酉時17 - 19戌時19 - 21亥時21 - 23 注意: 根據上表可以得出生辰八字的第八個字,比如早上 9 點出生即第八個字為 巳 十二時辰紀日對照表

          想要得到第七個字,需要使用以下對照表;比如 2020 年(庚子) 2 月(戊寅) 9 日(壬午)晚上 23 點(子時),找到 壬 和 子 對應的字即下表中的 庚子

          時/日甲、己乙、庚丙、辛丁、壬戊、癸子甲、子丙 、子戊、子庚、子壬、子丑乙、丑丁、丑己、丑辛、丑癸、丑寅丙、寅戊、寅庚、寅壬、寅甲、寅卯丁、卯己、卯辛、卯癸、卯乙、卯辰戊、辰庚、辰壬、辰甲、辰丙、辰巳己、巳辛、巳癸、巳乙、巳丁、巳午庚、午壬、午甲、午丙、午戊、午未辛、未癸、未乙、未丁、未己、未申壬、申甲、申丙、申戊、申庚、申酉癸、酉乙、酉丁、酉己、酉辛、酉戌甲、戌丙、戌戊、戌庚、戌壬、戌亥乙、亥丁、亥己、亥辛、亥癸、亥

          生辰八字 = 年(庚子) + 月(戊寅) + 日(壬午) + 時(庚子)

          五行干支對照表 五行天干地支木甲、乙寅、卯火丙、丁巳、午土戊、己辰、丑、戌、未金庚、辛申、酉水壬、癸亥、子

          按照上面的生辰八字得出五行(2 個金,3 個水,1 個土,1 個木,1 個火;此子五行不缺)

          庚子戊寅壬午庚子金水土木水火金水 五行八字Java實現代碼 package com.luxiu.java.base.wuxing; /** *

          * Description: 測試八字與五行版本1 *

          * * @author luguangdong * @version 1.0 * @ClassName WuXingApp * @date 2020/3/20 9:51 * @company */ public class WuXingApp { private static final String[] TG = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"}; private static final String[] DZ = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"}; public static void main(String[] args) { // 公元后某年 int year = 2020; // 農歷某月 int nMonth = 1; // 陽歷某月 int yMonth = 2; // 陽歷某日 int day = 10; // 時間 int time = 15; // 獲取干支年 String gzYear = getYear(year); System.out.println(year + " 年為 \"" + gzYear + "\" 年"); // 獲取干支月 String gzMonth = getMonth(gzYear, nMonth); System.out.println(year + " 年農歷 " + nMonth + " 月為 \"" + gzMonth + "\" 月"); // 獲取干支日 String gzDay = getDay(year, yMonth, day); System.out.println(year + " 年陽歷 " + yMonth + " 月 " + day + " 日為 \"" + gzDay + "\" 日"); // 獲取干支時 String gzTime = getTime(gzDay, time); System.out.println(year + " 年陽歷 " + yMonth + " 月 " + day + " 日 " + time + " 時為 \"" + gzTime + "\" 時"); // 生辰八字 System.out.println("您的生辰八字為:" + gzYear + gzMonth + gzDay + gzTime); // 生辰八字算五行 wuxing(gzYear, gzMonth, gzDay, gzTime); } /** * 獲取干支年 * 根據公元后某年換算出干支年 * *

          * 說明:假設公元后某年為 X 則先用 X 除以 60 得出余數再減去 4,根據所得結果查表中對應的編號即可算出該年的干支 * 如果減 4 不夠減則加上 60 之后再減即可 *

          * * @param year {@code int} 公元后的某一年 * @return {@code String} 干支年 */ public static String getYear(int year) { // 假設公元后某年為 X 則先用 X 除以 60 得出余數 int gzNum = year % 60; // 用余數減 4 不夠減則加上 60 之后再減得出編號 if (gzNum - 4 gzNum = gzNum - 4; } // 遍歷天干地支 for (int i = 0; i // 根據天干地支的索引進行匹配 return TG[itg] + DZ[idz]; } } return null; } /** * 獲取干支月 * 根據干支年換算出干支月 * *

          * 說明:若遇甲或己的年份 ,正月是丙寅;遇上乙或庚之年,正月為戊寅;遇上丙或辛之年,正月為庚寅;遇上丁或壬之年,正月為壬寅;遇上戊或癸之年,正月為甲寅 *

          * * @param gzYear {@code String} 干支年 * @param month {@code int} 農歷的月份 * @return {@code String} 干支月 */ public static String getMonth(String gzYear, int month) { String stg = gzYear.substring(0, 1); int itgFlag = 0; // 如果干支年的天干位為 “甲” 或 “己”,則從 TG 數組下標的第 2 位開始 if ("甲".equals(stg) || "己".equals(stg)) { itgFlag = 2; } else if ("乙".equals(stg) || "庚".equals(stg)) { itgFlag = 4; } else if ("丙".equals(stg) || "辛".equals(stg)) { itgFlag = 6; } else if ("丁".equals(stg) || "壬".equals(stg)) { itgFlag = 8; } for (int i = 0; i return TG[itg] + DZ[idz]; } } return null; } /** * 獲取干支日 * 根據陽歷年月日換算出干支日 * 天干 = (4 * c + c / 4 + 5 * y + y / 4 + 3 * (m + 1) / 5 + d - 3) % 10 * 地支 = (8 * c + c / 4 + 5 * y + y / 4 + 3 * (m + 1) / 5 + d + 7 + i) % 12 * * * c 為年份前兩位,比如 2019 年則 c 為 20 * y 為年份后兩位,比如 2019 年則 y 為 19 * m 為月份,1 月和 2 月按上一年的 13 月和 14 月來算 * d 為日數 * 奇數月 i 為 0 * 偶數月 i 為 6 * * * @param year {@code int} 陽歷年 * @param month {@code int} 陽歷月 * @param day {@code int} 陽歷日 * @return {@code String} 干支日 */ public static String getDay(int year, int month, int day) { String yearStr = String.valueOf(year); int c = Integer.parseInt(yearStr.substring(0, 2)); int y = Integer.parseInt(yearStr.substring(2)); // 嵌套的三元表達式,1 月和 2 月按上一年的 13 月和 14 月來算 int m = month == 1 ? 13 : month == 2 ? 14 : month; if (m == 13 || m == 14) { y--; } int d = day; // 三元表達式,月份除以 2 余 0 則為偶數否則為奇數 int i = m % 2 != 0 ? 0 : 6; int itg = (4 * c + c / 4 + 5 * y + y / 4 + 3 * m / 5 + d - 3) % 10; int idz = (8 * c + c / 4 + 5 * y + y / 4 + 3 * m / 5 + d + 7 + i) % 12; return TG[itg] + DZ[idz]; } /** * 獲取干支時 * *

          * 說明:根據十二時辰只能得出支,想要得到干,需要配合干支日換算 *

          * * @param gzDay {@code String} 干支日 * @param time {@code int} 24 小時制的時間 * @return {@code String} 干支時 */ public static String getTime(String gzDay, int time) { // 取出干支日的第一個字 gzDay = gzDay.substring(0, 1); // 換算出時間對應地支的下標位置 int idz = 0; if (time >= 23 || time idz = 1; } else if (time >= 3 && time idz = 3; } else if (time >= 7 && time idz = 5; } else if (time >= 11 && time idz = 7; } else if (time >= 15 && time idz = 9; } else if (time >= 19 && time idz = 11; } int itgFlag = 8; // 如果干支年的天干位為 “甲” 或 “己”,則從 TG 數組下標的第 0 位開始 if ("甲".equals(gzDay) || "己".equals(gzDay)) { itgFlag = 0; } else if ("乙".equals(gzDay) || "庚".equals(gzDay)) { itgFlag = 2; } else if ("丙".equals(gzDay) || "辛".equals(gzDay)) { itgFlag = 4; } else if ("丁".equals(gzDay) || "壬".equals(gzDay)) { itgFlag = 6; } return TG[(idz + itgFlag) % 10] + DZ[idz]; } /** * 通過八字算五行 * * @param gzYear {@code String} 干支年 * @param gzMonth {@code String} 干支月 * @param gzDay {@code String} 干支日 * @param gzTime {@code String} 干支時 */ public static void wuxing(String gzYear, String gzMonth, String gzDay, String gzTime) { // 天干年 String gYear = gzYear.substring(0, 1); if ("甲".equals(gYear) || "乙".equals(gYear)) { gYear = "木"; } if ("丙".equals(gYear) || "丁".equals(gYear)) { gYear = "火"; } if ("戊".equals(gYear) || "己".equals(gYear)) { gYear = "土"; } if ("庚".equals(gYear) || "辛".equals(gYear)) { gYear = "金"; } if ("壬".equals(gYear) || "癸".equals(gYear)) { gYear = "水"; } // 天干月 String gMonth = gzMonth.substring(0, 1); if ("甲".equals(gMonth) || "乙".equals(gMonth)) { gMonth = "木"; } if ("丙".equals(gMonth) || "丁".equals(gMonth)) { gMonth = "火"; } if ("戊".equals(gMonth) || "己".equals(gMonth)) { gMonth = "土"; } if ("庚".equals(gMonth) || "辛".equals(gMonth)) { gMonth = "金"; } if ("壬".equals(gMonth) || "癸".equals(gMonth)) { gMonth = "水"; } // 天干日 String gDay = gzDay.substring(0, 1); if ("甲".equals(gDay) || "乙".equals(gDay)) { gDay = "木"; } if ("丙".equals(gDay) || "丁".equals(gDay)) { gDay = "火"; } if ("戊".equals(gDay) || "己".equals(gDay)) { gDay = "土"; } if ("庚".equals(gDay) || "辛".equals(gDay)) { gDay = "金"; } if ("壬".equals(gDay) || "癸".equals(gDay)) { gDay = "水"; } // 天干時 String gTime = gzTime.substring(0, 1); if ("甲".equals(gTime) || "乙".equals(gTime)) { gTime = "木"; } if ("丙".equals(gTime) || "丁".equals(gTime)) { gTime = "火"; } if ("戊".equals(gTime) || "己".equals(gTime)) { gTime = "土"; } if ("庚".equals(gTime) || "辛".equals(gTime)) { gTime = "金"; } if ("壬".equals(gTime) || "癸".equals(gTime)) { gTime = "水"; } // 地支年 String zYear = gzYear.substring(1); if ("寅".equals(zYear) || "卯".equals(zYear)) { zYear = "木"; } if ("巳".equals(zYear) || "午".equals(zYear)) { zYear = "火"; } if ("辰".equals(zYear) || "丑".equals(zYear) || "戌".equals(zYear) || "未".equals(zYear)) { zYear = "土"; } if ("申".equals(zYear) || "酉".equals(zYear)) { zYear = "金"; } if ("亥".equals(zYear) || "子".equals(zYear)) { zYear = "水"; } // 地支月 String zMonth = gzMonth.substring(1); if ("寅".equals(zMonth) || "卯".equals(zMonth)) { zMonth = "木"; } if ("巳".equals(zMonth) || "午".equals(zMonth)) { zMonth = "火"; } if ("辰".equals(zMonth) || "丑".equals(zMonth) || "戌".equals(zMonth) || "未".equals(zMonth)) { zMonth = "土"; } if ("申".equals(zMonth) || "酉".equals(zMonth)) { zMonth = "金"; } if ("亥".equals(zMonth) || "子".equals(zMonth)) { zMonth = "水"; } // 地支日 String zDay = gzDay.substring(1); if ("寅".equals(zDay) || "卯".equals(zDay)) { zDay = "木"; } if ("巳".equals(zDay) || "午".equals(zDay)) { zDay = "火"; } if ("辰".equals(zDay) || "丑".equals(zDay) || "戌".equals(zDay) || "未".equals(zDay)) { zDay = "土"; } if ("申".equals(zDay) || "酉".equals(zDay)) { zDay = "金"; } if ("亥".equals(zDay) || "子".equals(zDay)) { zDay = "水"; } // 地支時 String zTime = gzTime.substring(1); if ("寅".equals(zTime) || "卯".equals(zTime)) { zTime = "木"; } if ("巳".equals(zTime) || "午".equals(zTime)) { zTime = "火"; } if ("辰".equals(zTime) || "丑".equals(zTime) || "戌".equals(zTime) || "未".equals(zTime)) { zTime = "土"; } if ("申".equals(zTime) || "酉".equals(zTime)) { zTime = "金"; } if ("亥".equals(zTime) || "子".equals(zTime)) { zTime = "水"; } // 輸出五行 String wuxing = gYear + zYear + gMonth + zMonth + gDay + zDay + gTime + zTime; System.out.println("您的八字五行為:" + wuxing); // 算出五行缺啥 String que = "您的五行缺:"; if (!wuxing.contains("金")) { que += "金"; } if (!wuxing.contains("木")) { que += "木"; } if (!wuxing.contains("水")) { que += "水"; } if (!wuxing.contains("火")) { que += "火"; } if (!wuxing.contains("土")) { que += "土"; } System.out.println(que.equals("您的五行缺:") ? "恭喜,您的五行不缺" : que); } }

          源碼地址:https://github.com/luguangdong/java-base/blob/master/src/com/luxiu/java/base/wuxing/WuXingApp2.java



          【本文地址】

          公司簡介

          聯系我們

          今日新聞

          推薦新聞

          專題文章
            CopyRight 2018-2019 實驗室設備網 版權所有
            黄色免费网站在线看,韩国精品在线观看,韩国美女一区二区,99国产热 双流县| 襄城县| 梁山县| 青海省| 旌德县| 镇沅| 宜春市| 津市市| 齐河县| 信丰县| 扶余县| 巴东县| 林芝县| 司法| 夏河县| 七台河市| 柯坪县| 泗阳县| 华坪县| 阳原县| 靖安县| 余江县| 宜君县| 和顺县| 昌邑市| 梅州市| 武威市| 育儿| 扎赉特旗| 罗山县| 邵阳县| 临沂市| 晋中市| 德昌县| 河池市| 东平县| 崇文区| 余干县| 朝阳市| 赤壁市| 报价| http://444 http://444 http://444 http://444 http://444 http://444