Skip to content
頁內導航

IZTRO

一套輕量級獲取紫微鬥數排盤信息的 Javascript 開源庫。

前言

歡迎使用 iztro 開發文檔!本頁將向你介紹如何集成、如何獲取數據、以及如何快速得到紫微鬥數裏一張星盤上的所有數據。如果你只是基礎使用者,閱讀完本篇文檔將足夠你日常使用。 如果你已經掌握了本頁內容,可以到其他頁面進行更深入的探索。如果你對紫微鬥數感興趣,但是有沒有相關基礎,可以點擊 基礎知識掃盲 進行掃盲學習。

你將獲取到以下信息:

  • 如何將 iztro 安裝和集成到你的代碼裏
  • 如何獲取到一張星盤
  • 如何基於星盤開始分析宮位
  • 如何基於宮位開始分析星曜

安裝

使用包管理安裝

你可以使用任意一種你熟悉的包管理工具進行安裝

sh
npm install iztro -S

安裝順利的話,會在你的package.json依賴列表中找到iztro

json
"dependencies": {
  "iztro": "^1.1.0"
}

版本號可能會有所不同

純JS庫使用 ^2.0.4

v2.0.4 版本以後,編譯了 umd 的純Javascript庫。可以下載 release 資源文件中的 🗜️iztro-min-js.tar.gz 壓縮包,裏面包含了一個 iztro 壓縮混淆過的js文件和對應的sourcemap文件。

當然,我們更推薦你直接使用 CDN 加速鏈接,你可以在下面列表中選擇一個,在沒有指定版本號的時候,會自動指向最新版本的代碼庫

你也可以使用如下規則來指定版本:

開始使用

引入代碼

你可以根據下列方式將iztro引入你的代碼

ts
import { astro } from "iztro";

獲取星盤數據

在獲取紫微鬥數星盤的時候,可以根據農歷或者陽歷日期來獲取,iztro提供了這兩種獲取方式,你可以根據你的需求使用,但我們更推薦你使用陽歷的方式來使用。 放心,陽歷和農歷在程序內部獲取到的數據是統一的。

使用 陽歷 有如下便利性:

  • 可以很方便的在出生證上查到
  • 可以使用日歷組件進行日期選擇
  • 現在很多人都無法記住農歷日期
  • 可以避免因為忽略了閏月而帶來的一系列問題
ts
import { astro } from "iztro";

// 通過陽歷獲取星盤信息
const astrolabe = astro.bySolar("2000-8-16", 2, "");

// 通過農歷獲取星盤信息
const astrolabe = astro.byLunar("2000-7-17", 2, "");

你會發現以上bySolarbyLunar的返回值是一樣的, 這是因為byLunar方法在內部處理的時候,也是將日期轉化為陽歷以後調用bySolar方法。 以下是執行結果,因為結果比較長,所以將之折疊起來,如果你想要查看你調用結果是否和這個一樣,可以展開查看:

astro.bySolar()astro.byLunar() 方法執行結果
ts
{
  // 陽歷日期
  solarDate: '2000-8-16',
   // 農歷日期
  lunarDate: '二〇〇〇年七月十七',
  // 四柱
  chineseDate: '庚辰 甲申 丙午 庚寅',
  // 時辰
  time: '寅時',
  // 時辰對應的時間段
  timeRange: '03:00~05:00',
  // 星座
  sign: '獅子座',
  // 生肖
  zodiac: '',
  // 命宮地支
  earthlyBranchOfSoulPalace: '',
  // 身宮地支
  earthlyBranchOfBodyPalace: '',
  // 命主
  soul: '破軍',
  // 身主
  body: '文昌',
  // 五行局
  fiveElementsClass: '木三局',
  // 十二宮數據
  palaces: [
    {
      // 宮名
      name: '財帛',
      // 是否身宮
      isBodyPalace: false,
      // 是否來因宮
      isOriginalPalace: false,
      // 宮位天干
      heavenlyStem: '',
      // 宮位地支
      earthlyBranch: '',
      // 主星(含天馬祿存)
      majorStars: [
        { name: '武曲', type: 'major', scope: 'origin', brightness: '' },
        { name: '天相', type: 'major', scope: 'origin', brightness: '' },
        { name: '天馬', type: 'tianma', scope: 'origin', brightness: '' },
      ],
      // 輔星(含六吉六煞)
      minorStars: [],
      // 雜耀
      adjectiveStars: [
        { name: '月解', type: 'helper', scope: 'origin' },
        { name: '三臺', type: 'adjective', scope: 'origin' },
        { name: '天壽', type: 'adjective', scope: 'origin' },
        { name: '天巫', type: 'adjective', scope: 'origin' },
        { name: '天廚', type: 'adjective', scope: 'origin' },
        { name: '陰煞', type: 'adjective', scope: 'origin' },
        { name: '天哭', type: 'adjective', scope: 'origin' },
      ],
      // 長生12神
      changsheng12: '',
      // 博士12神
      boshi12: '蜚廉',
      // 流年將前12神
      jiangqian12: '歲驛',
      // 流年歲前12神
      suiqian12: '吊客',
      // 大限
      stage: { range: [44, 53], heavenlyStem: '' },
      // 小限
      ages: [9, 21, 33, 45, 57, 69, 81],
    },
    {
      name: '子女',
      isBodyPalace: false,
      isOriginalPalace: false,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [
        { name: '太陽', type: 'major', scope: 'origin', brightness: '' },
        { name: '天梁', type: 'major', scope: 'origin', brightness: '' },
      ],
      minorStars: [],
      adjectiveStars: [{ name: '天刑', type: 'adjective', scope: 'origin' }],
      changsheng12: '',
      boshi12: '奏書',
      jiangqian12: '息神',
      suiqian12: '病符',
      stage: { range: [34, 43], heavenlyStem: '' },
      ages: [8, 20, 32, 44, 56, 68, 80],
    },
    {
      name: '夫妻',
      isBodyPalace: false,
      isOriginalPalace: true,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [{ name: '七殺', type: 'major', scope: 'origin', brightness: '' }],
      minorStars: [
        { name: '右弼', type: 'soft', scope: 'origin', brightness: '' },
        { name: '火星', type: 'tough', scope: 'origin', brightness: '' },
      ],
      adjectiveStars: [
        { name: '封誥', type: 'adjective', scope: 'origin' },
        { name: '華蓋', type: 'adjective', scope: 'origin' },
      ],
      changsheng12: '',
      boshi12: '將軍',
      jiangqian12: '華蓋',
      suiqian12: '歲建',
      stage: { range: [24, 33], heavenlyStem: '' },
      ages: [7, 19, 31, 43, 55, 67, 79],
    },
    {
      name: '兄弟',
      isBodyPalace: false,
      isOriginalPalace: false,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [{ name: '天機', type: 'major', scope: 'origin', brightness: '' }],
      minorStars: [],
      adjectiveStars: [
        { name: '天喜', type: 'flower', scope: 'origin' },
        { name: '天空', type: 'adjective', scope: 'origin' },
        { name: '孤辰', type: 'adjective', scope: 'origin' },
      ],
      changsheng12: '',
      boshi12: '小耗',
      jiangqian12: '劫煞',
      suiqian12: '晦氣',
      stage: { range: [14, 23], heavenlyStem: '' },
      ages: [6, 18, 30, 42, 54, 66, 78],
    },
    {
      name: '命宮',
      isBodyPalace: false,
      isOriginalPalace: false,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [{ name: '紫微', type: 'major', scope: 'origin', brightness: '' }],
      minorStars: [{ name: '文曲', type: 'soft', scope: 'origin', brightness: '' }],
      adjectiveStars: [
        { name: '年解', type: 'helper', scope: 'origin' },
        { name: '鳳閣', type: 'adjective', scope: 'origin' },
        { name: '天福', type: 'adjective', scope: 'origin' },
        { name: '截路', type: 'adjective', scope: 'origin' },
        { name: '蜚廉', type: 'adjective', scope: 'origin' },
      ],
      changsheng12: '',
      boshi12: '青龍',
      jiangqian12: '災煞',
      suiqian12: '喪門',
      stage: { range: [4, 13], heavenlyStem: '' },
      ages: [5, 17, 29, 41, 53, 65, 77],
    },
    {
      name: '父母',
      isBodyPalace: false,
      isOriginalPalace: false,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [],
      minorStars: [
        { name: '天鉞', type: 'soft', scope: 'origin', brightness: '' },
        { name: '陀羅', type: 'tough', scope: 'origin', brightness: '' },
      ],
      adjectiveStars: [
        { name: '天姚', type: 'flower', scope: 'origin' },
        { name: '空亡', type: 'adjective', scope: 'origin' },
      ],
      changsheng12: '帝旺',
      boshi12: '力士',
      jiangqian12: '天煞',
      suiqian12: '貫索',
      stage: { range: [114, 123], heavenlyStem: '' },
      ages: [4, 16, 28, 40, 52, 64, 76],
    },
    {
      name: '福德',
      isBodyPalace: false,
      isOriginalPalace: false,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [
        { name: '破軍', type: 'major', scope: 'origin', brightness: '' },
        { name: '祿存', type: 'lucun', scope: 'origin', brightness: '' },
      ],
      minorStars: [{ name: '文昌', type: 'soft', scope: 'origin', brightness: '' }],
      adjectiveStars: [
        { name: '龍池', type: 'adjective', scope: 'origin' },
        { name: '臺輔', type: 'adjective', scope: 'origin' },
        { name: '旬空', type: 'adjective', scope: 'origin' },
      ],
      changsheng12: '臨官',
      boshi12: '博士',
      jiangqian12: '指背',
      suiqian12: '官符',
      stage: { range: [104, 113], heavenlyStem: '' },
      ages: [3, 15, 27, 39, 51, 63, 75],
    },
    {
      name: '田宅',
      isBodyPalace: false,
      isOriginalPalace: false,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [],
      minorStars: [
        { name: '地空', type: 'tough', scope: 'origin', brightness: '' },
        { name: '擎羊', type: 'tough', scope: 'origin', brightness: '' },
      ],
      adjectiveStars: [
        { name: '鹹池', type: 'flower', scope: 'origin' },
        { name: '天貴', type: 'adjective', scope: 'origin' },
        { name: '月德', type: 'adjective', scope: 'origin' },
      ],
      changsheng12: '冠帶',
      boshi12: '官府',
      jiangqian12: '鹹池',
      suiqian12: '小耗',
      stage: { range: [94, 103], heavenlyStem: '' },
      ages: [2, 14, 26, 38, 50, 62, 74],
    },
    {
      name: '官祿',
      isBodyPalace: true,
      isOriginalPalace: false,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [
        { name: '廉貞', type: 'major', scope: 'origin', brightness: '' },
        { name: '天府', type: 'major', scope: 'origin', brightness: '' },
      ],
      minorStars: [{ name: '左輔', type: 'soft', scope: 'origin', brightness: '' }],
      adjectiveStars: [
        { name: '天才', type: 'adjective', scope: 'origin' },
        { name: '天虛', type: 'adjective', scope: 'origin' },
      ],
      changsheng12: '沐浴',
      boshi12: '伏兵',
      jiangqian12: '月煞',
      suiqian12: '大耗',
      stage: { range: [84, 93], heavenlyStem: '' },
      ages: [1, 13, 25, 37, 49, 61, 73],
    },
    {
      name: '仆役',
      isBodyPalace: false,
      isOriginalPalace: false,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [{ name: '太陰', type: 'major', scope: 'origin', brightness: '' }],
      minorStars: [],
      adjectiveStars: [
        { name: '紅鸞', type: 'flower', scope: 'origin' },
        { name: '恩光', type: 'adjective', scope: 'origin' },
        { name: '天官', type: 'adjective', scope: 'origin' },
        { name: '天月', type: 'adjective', scope: 'origin' },
        { name: '天傷', type: 'adjective', scope: 'origin' },
      ],
      changsheng12: '長生',
      boshi12: '大耗',
      jiangqian12: '亡神',
      suiqian12: '龍德',
      stage: { range: [74, 83], heavenlyStem: '' },
      ages: [12, 24, 36, 48, 60, 72, 84],
    },
    {
      name: '遷移',
      isBodyPalace: false,
      isOriginalPalace: false,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [{ name: '貪狼', type: 'major', scope: 'origin', brightness: '' }],
      minorStars: [{ name: '鈴星', type: 'tough', scope: 'origin', brightness: '' }],
      adjectiveStars: [{ name: ' 八座', type: 'adjective', scope: 'origin' }],
      changsheng12: '',
      boshi12: '病符',
      jiangqian12: '將星',
      suiqian12: '白虎',
      stage: { range: [64, 73], heavenlyStem: '' },
      ages: [11, 23, 35, 47, 59, 71, 83],
    },
    {
      name: '疾厄',
      isBodyPalace: false,
      isOriginalPalace: false,
      heavenlyStem: '',
      earthlyBranch: '',
      majorStars: [
        { name: '天同', type: 'major', scope: 'origin', brightness: '' },
        { name: '巨門', type: 'major', scope: 'origin', brightness: '' },
      ],
      minorStars: [
        { name: '天魁', type: 'soft', scope: 'origin', brightness: '' },
        { name: '地劫', type: 'tough', scope: 'origin', brightness: '' },
      ],
      adjectiveStars: [
        { name: '天德', type: 'adjective', scope: 'origin' },
        { name: '寡宿', type: 'adjective', scope: 'origin' },
        { name: '破碎', type: 'adjective', scope: 'origin' },
        { name: '天使', type: 'adjective', scope: 'origin' },
      ],
      changsheng12: '',
      boshi12: '喜神',
      jiangqian12: '攀鞍',
      suiqian12: '天德',
      stage: { range: [54, 63], heavenlyStem: '' },
      ages: [10, 22, 34, 46, 58, 70, 82],
    },
  ],
}

方法定義

  • 通過陽歷日期獲取星盤信息

    astro.bySolar(solarDateStr, timeIndex, gender, fixLeap, language)

    • 參數

      參數類型是否必填默認值說明
      solarDateStrstringtrue-陽歷日期【YYYY-M-D】
      timeIndexnumbertrue-出生時辰序號【0~12】,對應從早子時(0)一直到晚子時(12)的序號
      genderstringtrue-性別【男/女】
      fixLeapbooleanfalsetrue是否調整閏月,為true閏月的前半個月算上個月,後半個月算下個月
      languageLanguagefalsezh-CN返回數據將被國際化為指定語言。目前支持 zh-CN,zh-TW,en-US,ko-KRja-JP
    • 返回值

      FunctionalAstrolabe

  • 通過農歷日期獲取星盤信息

    astro.byLunar(lunarDateStr, timeIndex, gender, isLeapMonth, fixLeap, language)

    • 參數

      參數類型是否必填默認值說明
      lunarDateStrstringtrue-農歷日期【YYYY-M-D】,例如2000年七月十七則傳入2000-7-17
      timeIndexnumbertrue-出生時辰序號【0~12】,對應從早子時(0)一直到晚子時(12)的序號
      genderstringtrue-性別【男/女】
      isLeapMonthbooleanfalsefalse是否閏月,當實際月份沒有閏月時該參數不生效
      fixLeapbooleanfalsetrue是否調整閏月,為true閏月的前半個月算上個月,後半個月算下個月
      languageLanguagefalsezh-CN返回數據將被國際化為指定語言。目前支持 zh-CN,zh-TW,en-US,ko-KRja-JP
    • 返回值

      FunctionalAstrolabe

獲取運限

紫微鬥數的運限分為 大限流年流月流日流時流分流秒,由於 流分流秒 使用場景不多,所以我們暫時不提供。 大限流年流月流日流時 已經能滿足絕大部分需求和使用場景了,使用 iztro 能夠很輕松的獲取到這些數據。

ts
import { astro } from "iztro";

// 通過陽歷獲取星盤信息
const astrolabe = astro.bySolar("2000-8-16", 2, "");

// 獲取運限數據
astrolabe.horoscope(new Date());

調用 astrolabe.horoscope() 方法以後你會獲得如下數據

horoscope() 方法返回數據
ts
{
  solarDate: "2023-8-28"
  lunarDate: "二〇二三年七月十三"
  decadal: {
    index: 2
    heavenlyStem: ""
    earthlyBranch: ""
    palaceNames: ["夫妻", "兄弟", "命宮", "父母", "福德", "田宅", "官祿", "仆役", "遷移", "疾厄", "財帛", "子女"]
    mutagen: ["太陽", "武曲", "太陰", "天同"]
    stars: [{name: "運馬", type: "tianma", scope: "decadal"}], …]
    age: {
      index: 10
      nominalAge: 23
    }
  },
  yearly: {
    index: 1
    heavenlyStem: ""
    earthlyBranch: ""
    palaceNames: ["兄弟", "命宮", "父母", "福德", "田宅", "官祿", "仆役", "遷移", "疾厄", "財帛", "子女", "夫妻"]
    mutagen: ["破軍", "巨門", "太陰", "貪狼"]
    stars: [[], [{name: "流魁", type: "soft", scope: "yearly"}, …], [], …]
  },
  monthly: {
  index: 3
    heavenlyStem: ""
    earthlyBranch: ""
    palaceNames: ["子女", "夫妻", "兄弟", "命宮", "父母", "福德", "田宅", "官祿", "仆役", "遷移", "疾厄", "財帛"]
    mutagen: ["太陽", "武曲", "太陰", "天同"]
  },
  daily: {
    index: 3
    heavenlyStem: ""
    earthlyBranch: ""
    palaceNames: ["子女", "夫妻", "兄弟", "命宮", "父母", "福德", "田宅", "官祿", "仆役", "遷移", "疾厄", "財帛"]
    mutagen: ["貪狼", "太陰", "右弼", "天機"]
  },
  hourly: {
    index: 3
    heavenlyStem: ""
    earthlyBranch: ""
    palaceNames: ["子女", "夫妻", "兄弟", "命宮", "父母", "福德", "田宅", "官祿", "仆役", "遷移", "疾厄", "財帛"]
    mutagen: ["天梁", "紫微", "左輔", "武曲"]
  }
}

Tips: 只有 大限流年 有流耀。上面的運限數據和你調用的會因為傳入的時間參數不同而不同,但是結構上是一致的。

方法定義

  • 獲取當前星盤的運限信息

    astrolabe.horoscope(date, timeIndex)

    • 參數

      參數類型是否必填默認值說明
      datestring | Datefalsenew Date()陽歷日期字符串或日期對象,若時間字符串或日期對象中包含了小時的信息,timeIndex可以省略
      timeIndexnumberfalse0時辰序號,若不傳該參數則會嘗試從date裏獲取小時信息轉化為時辰序號
    • 返回值

      Horoscope

獲取流耀

上面的horoscope()方法內已經包含了大限流年的流耀,所以一般情況下無需在單獨調用獲取流耀的方法,但也有例外的情況需要自行獲取流耀,那就需要調用下列方法自行獲取。

ts
import { star } from "iztro";

// 通過天干地支獲取流耀
const horoscopeStars = star.getHoroscopeStar("", "", "decadal");

調用 star.getHoroscopeStar() 方法以後你會獲得如下數據

getHoroscopeStar() 方法返回數據
ts
[
  [{ name: "運馬", type: "tianma", scope: "decadal" }],
  [{ name: "運曲", type: "soft", scope: "decadal" }],
  [],
  [{ name: "運喜", type: "flower", scope: "decadal" }],
  [],
  [
    { name: "運鉞", type: "soft", scope: "decadal" },
    { name: "運陀", type: "tough", scope: "decadal" },
  ],
  [{ name: "運祿", type: "lucun", scope: "decadal" }],
  [{ name: "運羊", type: "tough", scope: "decadal" }],
  [],
  [
    { name: "運昌", type: "soft", scope: "decadal" },
    { name: "運鸞", type: "flower", scope: "decadal" },
  ],
  [],
  [{ name: "運魁", type: "soft", scope: "decadal" }],
];

方法定義

  • 通過 天干地支 獲取流耀

    star.getHoroscopeStar(heavenlyStem, earthlyBranch, scope)

    • 參數

      參數類型是否必填默認值說明
      heavenlyStemHeavenlyStemNametrue-天干
      earthlyBranchEarthlyBranchNametrue-地支
      scope'decadal' | 'yearly'true-限定是大限還是流年的流耀,其中大限流耀會在星曜前面加上,流年流耀會在星曜前面加上年解比較特殊,只會出現在流年的流耀裏
    • 返回值

      Star[][]

☕ 總結

如果您覺得本程序對您有用的話,可以給我帶杯咖啡嗎?👍 Paypal Me

以上數據可以生成如下星盤,其中 palaces 數據用於填充 12 宮,其他數據用於填充中宮。圖片中流耀的顯示和實際上有偏差,那是因為圖片是古早以前的一個版本生成的,請以實際返回數據為準。

demo

📜 版權

MIT License

Copyright © 2023 Sylar Long

請合理使用本開源代碼,禁止用於非法目的。