命盤
はじめに
紫微斗数の星盤は命盤とも呼ばれ、十二の宮と中宮から成ります。各宮の地支は固定され、並びは寅から始まり、子からではありません。旧暦の正月が寅月に当たるためで、これを旧暦正月は寅に対応するといいます。iztroでは、寅の宮のインデックスが0、卯の宮が1となり、時計回りに続きます。次の表をご覧ください。
巳3 | 午4 | 未5 | 申6 |
辰2 | 中宮 | 酉7 | |
卯1 | 戌8 | ||
寅0 | 丑11 | 子10 | 亥9 |
中宮には任意の情報を表示でき、通常は命盤全体の解釈に影響しません。周囲の十二宮には星曜、四化、運限、宮名などの情報を格納します。宮位の詳細は宮の説明をご覧ください。このページは命盤全体の情報を扱います。命盤は宮と星曜から成るため、初めての方には基礎知識からの学習をお勧めします。
iztroをインストールしたら、次のコードで命盤 (astro)オブジェクトを読み込めます。iztroの導入方法はインストール手順をご覧ください。
astroの静的メソッド
静的メソッドを使うには、まずimportでオブジェクトを読み込んでください。
import { astro } from "iztro";命盤の設定と入力値の検証 ^2.6.2
bySolar、byLunar、withOptionsが返す命盤は、生成時の設定と言語を保存します。グローバルの既定値を変更したり、別の言語で命盤を作ったりしても、既存の命盤の運限や四化の分析結果は変わりません。
withOptionsのtypeは省略でき、既定では陽暦を使います。configはその命盤の設定だけを上書きします。命盤の生成や日付補助メソッドでlanguageを省略するとzh-CNとなり、言語を指定しても他の呼び出しには影響しません。対応する値はzh-CN、zh-TW、en-US、ja-JP、ko-KR、vi-VNです。
年は1~9999で、陽暦または旧暦に実在する日付が必要です。日付文字列はハイフン、スラッシュ、ピリオドで区切れ、 HH:mmまたは HH:mm:ssを付けられます。過去の陽暦の日付は、基盤となる暦のユリウス暦・グレゴリオ暦の切り替え規則に従います。時刻インデックスは0~12の整数です。未対応の性別、言語、日付の種類、命盤の種類や、真偽値でない閏月オプションはエラーになります。旧暦の日付は実際の月の日数で検証し、閏月のない月ではisLeapMonth: trueを無視します。
設定の適用範囲、getConfig()が返す独立したコピー、resetConfig()については、設定とプラグインをご覧ください。
astrolabeBySolarDate deprecated
このメソッドはv2.0.5で非推奨になりました。引数と戻り値は同じなので、bySolarを使ってください。
bySolar ^2.0.5
目的
陽暦の日付から命盤を生成します。
定義
tsexport type bySolar = ( solarDateStr: string, timeIndex: number, gender: GenderName, fixLeap: boolean = true, language: Language = "zh-CN" ) => FunctionalAstrolabe;パラメータ
パラメータ 型 必須 デフォルト値 説明 solarDateStr stringtrue- グレゴリオ暦の日付【YYYY-M-D】 timeIndex numbertrue- 出生時辰のインデックス [0–12]。早子時 (0) から晩子時 (12) に対応します。 gender GenderNametrue- 性別【男性/女性】 fixLeap booleanfalsetrue閏月を調整するかどうか。 trueの場合、閏月の前半を前月、後半を翌月として扱います。language Languagefalsezh-CN戻り値に使用する言語です。 zh-CN、zh-TW、en-US、ko-KR、ja-JP、vi-VNに対応しています。戻り値
使用例
tsimport { astro } from "iztro"; const astrolabe = astro.bySolar("2000-8-16", 2, "女", true, "zh-CN");
astrolabeByLunarDate deprecated
このメソッドはv2.0.5で非推奨になりました。引数と戻り値は同じなので、byLunarを使ってください。
byLunar ^2.0.5
目的
旧暦の日付から命盤を生成します。筆者は
bySolarを直接使うことを勧めています。このメソッドも旧暦を陽暦に変換した後、bySolarを呼んで結果を得るためです。定義
tsexport type byLunar = ( lunarDateStr: string, timeIndex: number, gender: GenderName, isLeapMonth: boolean = false, fixLeap: boolean = true, language?: Language ) => FunctionalAstrolabe;パラメータ
パラメータ 型 必須 デフォルト値 説明 lunarDateStr stringtrue- 旧暦の日付 [YYYY-M-D]。 旧暦2000年7月17日なら2000-7-17を渡します。timeIndex numbertrue- 出生時辰のインデックス [0–12]。早子時 (0) から晩子時 (12) に対応します。 gender GenderNametrue- 性別【男性/女性】 isLeapMonth booleanfalsefalse指定した旧暦の月が閏月かどうか。その月に閏月がない場合、この引数は無効です。 fixLeap booleanfalsetrue閏月を調整するかどうか。 trueの場合、閏月の前半を前月、後半を翌月として扱います。language Languagefalsezh-CN戻り値に使用する言語です。 zh-CN、zh-TW、en-US、ko-KR、ja-JP、vi-VNに対応しています。戻り値
使用例
tsimport { astro } from "iztro"; const astrolabe = astro.byLunar("2000-8-16", 2, "女", false, true, "zh-CN");
withOptions ^2.4.1
目的
bySolarとbyLunarを呼び出しやすくしたラッパーを使って、命盤を生成します。定義
tstype Option = { type?: 'solar' | 'lunar'; dateStr: string; timeIndex: number; gender: GenderName; isLeapMonth?: boolean; fixLeap?: boolean; language?: Language; config?: Config; astroType?: AstroType; }; export type withOptions = ( option: Option ) => FunctionalAstrolabe;パラメータ
パラメータ 型 必須 デフォルト値 説明 type solar|lunarfalsesolar日付型 dateStr stringtrue- YYYY-M-D形式の生年月日 timeIndex numbertrue- 出生時辰のインデックス [0–12]。早子時 (0) から晩子時 (12) に対応します。 gender GenderNametrue- 性別【男性/女性】 isLeapMonth booleanfalsefalse指定した旧暦の月が閏月かどうか。その月に閏月がない場合、この引数は無効です。 fixLeap booleanfalsetrue閏月を調整するかどうか。 trueの場合、閏月の前半を前月、後半を翌月として扱います。language Languagefalsezh-CN戻り値に使用する言語です。 zh-CN、zh-TW、en-US、ko-KR、ja-JP、vi-VNに対応しています。config Configfalse- 今回作成する命盤に限り、輝度・四化・時刻の区切り設定を上書きします (^2.6.2)。 astroType ^2.5.0 AstroTypefalseheaven命盤の種類。 config.algorithmがzhongzhouのときだけ、天盤・地盤・人盤の選択に使います。戻り値
使用例
tsimport { astro } from "iztro"; const astrolabe = astro.withOptions({ type: 'solar', dateStr: '1999-12-29', timeIndex: 2, gender: 'female', isLeapMonth: false, fixLeap: true, language: 'zh-CN', config: { algorithm: 'zhongzhou' }, astroType: 'earth' })ヒント
astroTypeにはheaven、earth、humanを指定できます。既定のheavenは天盤です。earthは身宮を命宮とし、humanは福德宮を命宮とします。AstroTypeをご覧ください。
getMajorStarBySolarDate ^1.2.1
目的
陽暦の日付から命宮の主星を取得します。
定義
tstype getMajorStarBySolarDate = ( solarDateStr: string, timeIndex: number, fixLeap: boolean = true, language?: Language, ) => string;パラメータ
パラメータ 型 必須 デフォルト値 説明 solarDateStr stringtrue- グレゴリオ暦の日付【YYYY-M-D】 timeIndex numbertrue- 出生時辰のインデックス [0–12]。早子時 (0) から晩子時 (12) に対応します。 fixLeap booleanfalsetrue閏月を調整するかどうか。 trueの場合、閏月の前半を前月、後半を翌月として扱います。language Languagefalsezh-CN戻り値に使用する言語です。 zh-CN、zh-TW、en-US、ko-KR、ja-JP、vi-VNに対応しています。使用例
tsimport { astro } from 'isztro'; const result = getMajorStarBySolarDate('2023-4-7', 0);
getMajorStarByLunarDate ^1.2.1
目的
旧暦の日付から命宮の主星を取得します。
定義
tstype getMajorStarByLunarDate = ( lunarDateStr: string, timeIndex: number, isLeapMonth: boolean = false, fixLeap: boolean = true, language?: Language, ) =>パラメータ
パラメータ 型 必須 デフォルト値 説明 lunarDateStr stringtrue- 旧暦の日付 [YYYY-M-D]。 旧暦2000年7月17日なら2000-7-17を渡します。timeIndex numbertrue- 出生時辰のインデックス [0–12]。早子時 (0) から晩子時 (12) に対応します。 isLeapMonth booleanfalsefalse指定した旧暦の月が閏月かどうか。その月に閏月がない場合、この引数は無効です。 fixLeap booleanfalsetrue閏月を調整するかどうか。 trueの場合、閏月の前半を前月、後半を翌月として扱います。language Languagefalsezh-CN戻り値に使用する言語です。 zh-CN、zh-TW、en-US、ko-KR、ja-JP、vi-VNに対応しています。使用例
tsimport { astro } from 'isztro'; const result = getMajorStarByLunarDate('2023-2-17', 0, true, false);
getSignBySolarDate ^1.2.1
目的
陽暦の日付から星座を取得します。
定義
tstype getSignBySolarDate = ( solarDateStr: string, language?: Language ) => string;パラメータ
パラメータ 型 必須 デフォルト値 説明 solarDateStr stringtrue- グレゴリオ暦の日付【YYYY-M-D】 language Languagefalsezh-CN戻り値に使用する言語です。 zh-CN、zh-TW、en-US、ko-KR、ja-JP、vi-VNに対応しています。使用例
tsimport { astro } from 'isztro'; const result = getSignBySolarDate('2023-9-5');
getSignByLunarDate ^1.2.1
目的
旧暦の日付から星座を取得します。
定義
tstype getSignByLunarDate = ( lunarDateStr: string, isLeapMonth?: boolean, language?: Language ) => string;パラメータ
パラメータ 型 必須 デフォルト値 説明 lunarDateStr stringtrue- 旧暦の日付 [YYYY-M-D]。 旧暦2000年7月17日なら2000-7-17を渡します。isLeapMonth booleanfalsefalse指定した旧暦の月が閏月かどうか。その月に閏月がない場合、この引数は無効です。 language Languagefalsezh-CN戻り値に使用する言語です。 zh-CN、zh-TW、en-US、ko-KR、ja-JP、vi-VNに対応しています。使用例
tsimport { astro } from 'isztro'; const result = getSignByLunarDate('2023-7-21');
getZodiacBySolarDate ^1.2.1
目的
陽暦の日付から十二支の動物を取得します。
定義
tstype getZodiacBySolarDate = (solarDateStr: string, language?: Language) => string;パラメータ
パラメータ 型 必須 デフォルト値 説明 solarDateStr stringtrue- グレゴリオ暦の日付【YYYY-M-D】 language Languagefalsezh-CN戻り値に使用する言語です。 zh-CN、zh-TW、en-US、ko-KR、ja-JP、vi-VNに対応しています。使用例
tsimport { astro } from 'isztro'; const result = getZodiacBySolarDate('2023-2-20');
getZodiacByLunarYear ^1.2.1
目的
旧暦の年から十二支の動物を取得します。
定義
tstype getZodiacByLunarYear = (year: number, language?: Language) => string;パラメータ
パラメータ 型 必須 デフォルト値 説明 year numbertrue- 旧暦の年 language Languagefalsezh-CN戻り値に使用する言語です。 zh-CN、zh-TW、en-US、ko-KR、ja-JP、vi-VNに対応しています。使用例
tsimport { astro } from 'isztro'; const result = getZodiacByLunarYear(2023);
クラスと分析メソッド
開発提案
FunctionalAstrolabeを直接生成するより、astroの静的メソッドでデータを取得することをお勧めします。
FunctionalAstrolabe
implements
IFunctionalAstrolabe extends AstrolabeこのクラスはAstrolabeのプロパティを継承し、命盤を分析するメソッドを加えます。bySolar()とbyLunar()は、このクラスのインスタンスを返します。
インターフェースの定義
tsinterface IFunctionalAstrolabe extends Astrolabe { toJSON: () => Astrolabe; use(plugin: Plugin): void; horoscope: (date?: string | Date, timeIndex?: number) => Horoscope; decadalList: () => DecadalHoroscope[]; yearlyList: (indexOrName: number | PalaceName) => YearlyHoroscope[]; monthlyList: (year: number, fixLeap?: boolean) => MonthlyHoroscope[]; palace: (indexOrName: number | PalaceName) => IFunctionalPalace | undefined; surroundedPalaces: (indexOrName: number | PalaceName) => SurroundedPalaces; isSurrounded: ( indexOrName: number | PalaceName, stars: StarName[] ) => boolean; isSurroundedOneOf: ( indexOrName: number | PalaceName, stars: StarName[] ) => boolean; notSurrounded: ( indexOrName: number | PalaceName, stars: StarName[] ) => boolean; hasMutagenInSurroundedPalace: ( indexOrName: number | PalaceName, mutagen: Mutagen ) => boolean; hasMutagenInOppositePalace: ( indexOrName: number | PalaceName, mutagen: Mutagen ) => boolean; }プロパティ
リファレンス Astrolabe
メソッド
toJSON() ^2.6.0
目的
機能付き命盤を通常のJSONオブジェクトに変換します。分析メソッド、プラグイン関数、実行時参照は含めず、循環参照も安全に除外します。
定義
tstype toJSON = () => Astrolabe;パラメータ
なし
戻り値
使用例
tsimport { astro } from "iztro"; const astrolabe = astro.bySolar("2000-8-16", 2, "女"); const data = astrolabe.toJSON();
use() ^2.3.0
目的
現在の命盤のインスタンスにプラグインを適用します。
astro.loadPlugin()と異なり、use()はこのインスタンスだけに作用します。定義
tstype use = (plugin: Plugin) => void;パラメータ
パラメータ 型 必須 デフォルト値 説明 plugin Plugintrue- 現在の命盤に適用するプラグイン関数 戻り値
void使用例
tsimport { astro, FunctionalAstrolabe } from "iztro"; interface IAstrolabe extends FunctionalAstrolabe { soulPalaceName: () => string; } function soulPalacePlugin(this: IAstrolabe) { this.soulPalaceName = () => this.palace("命宫")?.name ?? ""; } const astrolabe = astro.bySolar<IAstrolabe>("2000-8-16", 2, "女"); astrolabe.use(soulPalacePlugin); const name = astrolabe.soulPalaceName();
horoscope() ^0.2.0
目的
運限のデータを取得します。呼び出し時点のデータが必要なら引数をすべて省略でき、その時点のシステム時刻で計算します。
注記
dateがYYYY-M-D形式の日付だけの文字列で、timeIndexを省略した場合は、dateの当日の早子時を流時の時刻として使います。dateがYYYY-M-D HH形式の時刻を含む、またはDateインスタンスで、timeIndexを省略した場合は、dateの時を時辰に変換し、流時の計算に使います。timeIndexを指定すると、日付から求めた時刻より優先されます。
定義
tstype horoscope = (date?: string | Date, timeIndex?: number) => FunctionalHoroscope;パラメータ
パラメータ 型 必須 デフォルト値 説明 date string|Datefalsenew Date()グレゴリオ暦の日付【YYYY-M-D】 timeIndex numberfalse0時辰のインデックス [0–12] 戻り値
注記
v1.3.4で戻り値の型はHoroscopeからFunctionalHoroscopeに変わりましたが、既存の使い方と互換性があります。使用例
tsimport { astro } from "iztro"; const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN"); const horoscope = astrolabe.horoscope();
decadalList() ^2.6.0
目的
大限を開始順に並べた一覧を取得します。配列のインデックス
0は最初の大限です。各項目には、対応する宮、開始・終了時の数え年と年、干支、四化、流曜、大限の十二宮が含まれます。定義
tstype decadalList = () => DecadalHoroscope[];戻り値
使用例
tsconst decadals = astrolabe.decadalList(); const firstDecadal = decadals[0];
yearlyList() ^2.6.0
目的
大限のインデックスまたは本命の宮名から、その大限に含まれる流年の一覧を取得します。各項目には数え年、年、流年の干支、四化、流曜、流年の十二宮が含まれます。
定義
tstype yearlyList = ( indexOrName: number | PalaceName ) => YearlyHoroscope[];パラメータ
パラメータ 型 必須 デフォルト値 説明 indexOrName number|PalaceNametrue- 大限のインデックス( 0が最初の大限)、または本命盤の宮名戻り値
使用例
tsconst firstDecadalYearlies = astrolabe.yearlyList(0); const soulPalaceYearlies = astrolabe.yearlyList("命宫");
monthlyList() ^2.6.0
目的
指定した年の流月の一覧を取得します。各項目には数え年、年、月、流月の干支、四化、流曜、流月の十二宮が含まれます。
閏月がなければ12項目を返します。閏月があり
fixLeap=falseの場合は13項目、fixLeap=trueの場合は閏月を1日~15日と16日~月末に分け、14項目を返します。定義
tstype monthlyList = ( year: number, fixLeap?: boolean ) => MonthlyHoroscope[];パラメータ
パラメータ 型 必須 デフォルト値 説明 year numbertrue- 流年の年。 yearlyList()が返す項目のyearをそのまま使えます。fixLeap booleanfalsetrue閏月の前半と後半を分けて計算するかどうか 戻り値
使用例
tsconst year = astrolabe.yearlyList(0)[0].year; const adjusted = astrolabe.monthlyList(year); const unadjusted = astrolabe.monthlyList(year, false);
star() ^1.2.0
目的
星曜の名前から、そのオブジェクトのインスタンスを取得します。
定義
tstype star = (starName: StarName) => IFunctionalStar;パラメータ
パラメータ 型 必須 デフォルト値 説明 starName StarNametrue- 星曜名 戻り値
使用例
tsimport { astro } from "iztro"; const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN"); // 获取 `紫微星` 所在宫位 const star = astrolabe.star("紫微");
palace() ^1.0.0
目的
命盤から指定した
宮を取得します。定義
tstype palace = ( indexOrName: number | PalaceName ) => IFunctionalPalace | undefined;パラメータ
パラメータ 型 必須 デフォルト値 説明 indexOrName number|PalaceNametrue- 宮のインデックスまたは名称 戻り値
使用例
tsimport { astro } from "iztro"; const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN"); // 获取 `寅宫` const palace = astrolabe.palace(0); // 获取 `命宫` const soulPalace = astrolabe.palace("命宫");
surroundedPalaces() ^1.1.0
目的
三方四正に当たる宮を取得します。入力した対象の宮、その対宮、相対的な財帛の位置と官禄の位置の計四宮です。宮と位置は異なる概念です。宮や三方四正の意味は、宮の説明をご覧ください。定義
tstype surroundedPalaces = ( indexOrName: number | PalaceName ) => IFunctionalSurpalaces;パラメータ
パラメータ 型 必須 デフォルト値 説明 indexOrName number|PalaceNametrue- 宮のインデックスまたは名称 戻り値
使用例
tsimport { astro } from "iztro"; const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN"); // 获取 `寅宫` 三方四正 const surroundedPalaces = astrolabe.surroundedPalaces(0); // 获取 `命宫` 三方四正 const surroundedPalacesOfSoul = astrolabe.surroundedPalaces("命宫");
isSurrounded() ^1.0.0 deprecated
注記
このメソッドは
v1.2.0で非推奨になりました。FunctionalSurpalacesのhave()メソッドを使ってください。目的
指定した宮の
三方四正に、対象の星曜がすべてある場合にのみtrueを返します。定義
tstype isSurrounded = ( indexOrName: number | PalaceName, stars: StarName[] ) => boolean;パラメータ
パラメータ 型 必須 デフォルト値 説明 indexOrName number|PalaceNametrue- 宮のインデックスまたは名称 stars StarName[]true- 星曜名の配列 戻り値
boolean使用例
tsimport { astro } from "iztro"; const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN"); // 判断 `寅宫` 三方四正是否含有 `天府` 星、`红鸾` 星和 `禄存` 星 const palace = astrolabe.isSurrounded(0, ["天府", "红鸾", "禄存"]); // 判断 `命宫` 三方四正是否含有 `天府` 星、`红鸾` 星和 `禄存` 星 const soulPalace = astrolabe.isSurrounded("命宫", ["天府", "红鸾", "禄存"]);
isSurroundedOneOf() ^1.1.0 deprecated
注記
このメソッドは
v1.2.0で非推奨になりました。FunctionalSurpalacesのhaveOneOf()メソッドを使ってください。目的
指定した宮の
三方四正に、入力した星のいずれか一つがあるか確認します。一つでもあればtrueを返します。定義
tstype isSurroundedOneOf = ( indexOrName: number | PalaceName, stars: StarName[] ) => boolean;パラメータ
パラメータ 型 必須 デフォルト値 説明 indexOrName number|PalaceNametrue- 宮のインデックスまたは名称 stars StarName[]true- 星曜名の配列 戻り値
boolean使用例
tsimport { astro } from "iztro"; const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN"); // 判断 `寅宫` 三方四正是否含有 `天府` 星、`红鸾` 星和 `禄存` 星中的一颗 const palace = astrolabe.isSurroundedOneOf(0, ["天府", "红鸾", "禄存"]); // 判断 `命宫` 三方四正是否含有 `天府` 星、`红鸾` 星和 `禄存` 星中的一颗 const soulPalace = astrolabe.isSurroundedOneOf("命宫", ["天府", "红鸾", "禄存"]);
notSurrounded() ^1.1.0 deprecated
注記
このメソッドは
v1.2.0で非推奨になりました。FunctionalSurpalacesのnotHave()メソッドを使ってください。目的
指定した宮の
三方四正が対象の星を含まないか判定します。すべての対象星が存在しない場合にのみtrueを返します。定義
tstype notSurrounded = ( indexOrName: number | PalaceName, stars: StarName[] ) => boolean;パラメータ
パラメータ 型 必須 デフォルト値 説明 indexOrName number|PalaceNametrue- 宮のインデックスまたは名称 stars StarName[]true- 星曜名の配列 戻り値
boolean使用例
tsimport { astro } from "iztro"; const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN"); // 判断 `寅宫` 三方四正是否不含有 `天府` 星、`红鸾` 星和 `禄存` 星 const palace = astrolabe.notSurrounded(0, ["天府", "红鸾", "禄存"]); // 判断 `命宫` 三方四正是否不含有 `天府` 星、`红鸾` 星和 `禄存` 星 const soulPalace = astrolabe.notSurrounded("命宫", ["天府", "红鸾", "禄存"]);