-
Notifications
You must be signed in to change notification settings - Fork 58
/
shishen.go
177 lines (158 loc) · 8.17 KB
/
shishen.go
1
2
3
4
5
6
7
8
9
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
package bazi
/*
十神是以某个五行为中心,按五行生克关系划分的,八字中日干代表自己,其他字以日干为中心来定义十神,每个十神代表着一定的类象详见《子平真诠》等,用来批断人的命运特征。以日干为中心,见到什么字马上就知道他代表哪个十神,这是最关键的基本功。
利用天干和地支来准确记录年、月、日、时的方式,由“年干,年支”、“月干,月支”、“日干,日支”、“时干,时支”,共八个干支所组成(共八个字),年、月、日、时的干支组合称为“柱”,形成“年柱”、“月柱”、“日柱”、“时柱”。唐朝时期,初以年柱为主体,以生年干为本命,辅以纳音法推命。唐代的李虚中改以年为主,取年、月、日、时四柱推命。五代的徐子平改以日干为我(日主),查四柱间之五行生克制化、刑冲会合为推命重点,并发扬光大。当今的八字推命中,四柱即:“年柱”、“月柱”、“日柱”、“时柱”,由“年干,年支”、“月干,月支”、“日干,日支”、“时干,时支”,共八个干支所组成(正好八个字)。每一个组合称为“柱”,形成“年柱”、“月柱”、“日柱”、“时柱”,故八字又称为“四柱”或“四柱八字”。以日干为我(日主,命主),查四柱间的五行生克制化、刑冲会合为推命的重点。 [1]
因五行有五种,所以八字中与日干的关系有五种,细分阴阳为十,所以有十神。同性为偏,异性为正。
1、生我者为枭印。同性为偏印,也叫枭神,简称枭;异性为正印,简称印。比如日干为甲木,壬、亥为偏印,癸、子则为正印。
2、同我者为比劫。同性为比肩,简称比;异性为劫财,简称劫。比如日干为甲,甲、寅为比肩,乙卯为劫财。
3、我生者为食伤。同性为食神,简称食;异性为伤官,简称伤。比如日干为甲,丙午为食神,丁巳为伤官。
4、我克者为才财。同性为偏财,简称财;异性为正财,简称才(贝)(在台湾香港等地区,正财简称“财”,偏财简称“才”,因劫财简称“劫”,故正财应简称“财”为宜,因中国各地各人各书古今简称不同,造成定义混乱,须注明,按各自习惯)。比如日干为甲,戊、辰、戌土就是偏财,己、丑,未土就是正财。
5、克我者为杀官。同性为偏官,或者七杀,简称杀;异性为正官,简称官。比如日干为甲木,庚申为七杀,辛酉为正官。
十神之间的关系就是他们所在五行的关系。比如十神的相克关系,比克财,财克印,印克食伤,十神的其他关系依此类推。
日元星,比劫同。生食伤,克才财。杀官克,枭印生。
同性作用关系大,异性作用关系小,克优先于生。
日干可以叫作日元、日主。乾造为男命,坤造为女命。
十神关系表(甲为例)
五行
关系
阳 同性
阴 异性
木
同我
甲 比肩
乙 劫财
火
我生
丙 食神
丁 伤官
土
我克
戊 偏财
己 正财
金
克我
庚 七杀
辛 正官
水
生我
壬 偏印
癸 正印
官杀为阴阳木、印绶为阴阳火、
比劫为阴阳土、食伤为阴阳金、
财星为阴阳水。
正官功能
正官与日干的关系是:正官是克制我(日干)的。是阳干见阴干克,或阴干见阳干克。
正官的职能:是善意之管,譬如人类,必须遵从政府与法律管束。正官一般以吉神论。
正官的扶抑能力:卫财,生印,抑身,制劫。身强财弱,正官生印。日干旺盛,正官拘身。日旺劫多,正官制劫。
七杀功能
七杀与日干的关系:七杀是克制我(日干)的,是阳干见阳干,阴干见阴干。
七杀的职能:杀身之对手,专以攻身为尚,若无礼法制裁,必伤其主(日干),故有制(有食神,伤官克制)谓之偏官,无制谓之七杀。一般以凶神论。
七杀的扶抑能力:耗财,生印,攻身,制劫。日强财弱,七杀耗财。日强印轻,七杀生印。印轻财重,七杀攻身。日强劫多,七杀制劫。
正偏财功能
正偏财与日干的关系:正偏财是受我(日干)克制的。正财是阳干见阴干,阴干见阳干;偏财是阳干见阳干,阴干见阴干。正偏财职能:是养命之源,人人所欲,但非人人所得,古今皆然。一般以吉神论。
财星的扶抑能力:生官杀,泄食伤,制枭神,坏正印。日旺官杀弱,财生官杀。日旺财弱,财泄食伤。日旺枭神旺,偏财制枭神。日旺正印旺,正财坏正印。
正偏印功能
正偏印是生我(日干)的。正印是阳干见阴干,阴干见阳干;偏印是阳干见阳干,阴干见阴干。
正偏印职能:我之气源,如父母生身之义。正印一般为吉神,偏印一般为凶神,又称枭神,见食(食神)而夺为枭神之故。
正偏印的扶抑能力:生身,泄官杀,御伤,挫食。日弱官杀强,印星泄官杀生身。日弱食伤重,正印御伤,偏印挫食。
伤官食神功能
伤食与日干的关系:食伤是我(日干)所生的。伤官是阳干见阴干,或阴干见阳干;食神是阳干见阳干,阴干见阴干。
食伤的职能:伤见官仗势欺之,放任日干于理法之外,故一般以凶神论;食见杀则能制服,使日干得以安然无故,一般以吉神论。
食伤的扶抑能力:泄身,生财,敌杀,损官。身强财官弱,食伤泄身。身强财弱,食伤生财。身弱官杀重,食伤敌杀损官。
比劫职能
比劫与日干的关系:比劫与我(日干)同类。劫财是阳干见阴干,或阴干见阳干;比肩是阳干见阳干,阴干见阴干。比肩的职能:财之敌。日旺一般以凶神论。
比劫的扶抑能力:帮身,任官杀,化泄,夺财。日弱有比劫帮身,日弱有比劫任官杀,日弱有比劫不怕化泄,日旺有比劫夺财。
*/
// GetShiShenLongFromNumber 从数字获取十神长名, 0-9
func GetShiShenLongFromNumber(nValue int) string {
switch nValue {
case 0:
return "比肩"
case 1:
return "劫财"
case 2:
return "食神"
case 3:
return "伤官"
case 4:
return "偏财"
case 5:
return "正财"
case 6:
return "七杀"
case 7:
return "正官"
case 8:
return "偏印"
case 9:
return "正印"
}
return ""
}
// GetShiShenFromNumber 从数字获得十神名, 0-9
func GetShiShenFromNumber(nValue int) string {
switch nValue {
case 0:
return "比"
case 1:
return "劫"
case 2:
return "食"
case 3:
return "伤"
case 4:
return "才"
case 5:
return "财"
case 6:
return "杀"
case 7:
return "官"
case 8:
return "卩"
case 9:
return "印"
}
return ""
}
// NewShiShen 新建十神
func NewShiShen(nValue int) *TShiShen {
nValue %= 10
pShishen := TShiShen(nValue)
return &pShishen
}
// 十神
var shishenlist = [...][10]int{
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, // 甲
{1, 0, 3, 2, 5, 4, 7, 6, 9, 8}, // 乙
{8, 9, 0, 1, 2, 3, 4, 5, 6, 7}, // 丙
{9, 8, 1, 0, 3, 2, 5, 4, 7, 6}, // 丁
{6, 7, 8, 9, 0, 1, 2, 3, 4, 5}, // 戊
{7, 6, 9, 8, 1, 0, 3, 2, 5, 4}, // 己
{4, 5, 6, 7, 8, 9, 0, 1, 2, 3}, // 庚
{5, 4, 7, 6, 9, 8, 1, 0, 3, 2}, // 辛
{2, 3, 4, 5, 6, 7, 8, 9, 0, 1}, // 壬
{3, 2, 5, 4, 7, 6, 9, 8, 1, 0}} // 癸
// NewShiShenFromGan 从日干和目标干获取十神
// nDayGan 日干 Gan2 目标干
func NewShiShenFromGan(nDayGan int, pGan2 *TGan) *TShiShen {
return NewShiShen(shishenlist[nDayGan][pGan2.Value()])
}
// ToString 转换成可阅读的字符串
func (m *TShiShen) ToString() string {
return m.String()
}
// ToInt 转换成int
func (m *TShiShen) ToInt() int {
return m.Value()
}
// TShiShen 十神
type TShiShen int
// Value 转换成int
func (m *TShiShen) Value() int {
return (int)(*m)
}
// String 转换成可阅读的字符串
func (m *TShiShen) String() string {
return GetShiShenFromNumber(m.Value())
}