cal

package
v1.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 31, 2022 License: MIT Imports: 10 Imported by: 0

README

历法

  • data.go map数组 阳历有效时间范围为1600~3500

数据库

MariaDB

  • cal.sql 有效时间同data.go的map数组
  • ccal.sql 有效时间-4000~8000
  • 使用ccal.sql需要设置
  • my.cnf
[mysqld]
max_allowed_packet=100M #大于20M

重启服务

systemctl restart mysqld.service

导入数据库

mysql -u root -pxxxxx
create database ccal;
use ccal;
source /path/ccal.sql

参考

农历编算法则

数据来源

TDBtimes.txt

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	//二十四节气名称
	Jmc = []string{
		"冬至", "小寒", "大寒", "立春", "雨水", "惊蛰",
		"春分", "清明", "谷雨", "立夏", "小满", "芒种",
		"夏至", "小暑", "大暑", "立秋", "处暑", "白露",
		"秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至",
	}
	//十天干 甲1 ...癸10
	Gan = [11]string{"err", "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"}
	//十二地支 子1 ...亥12
	Zhi = [13]string{"err", "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"}
	//月名称
	Ymc = []string{"正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"}
	//农历日名称
	Rmc = []string{
		"初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十",
		"十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十",
		"廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十"}
	//二十八宿 东-->北-->西-->南逆时针走
	XingSu28 = [28]string{
		"角木蛟", "亢金龙", "氐土貉", "房日兔", "心月狐", "尾火虎", "箕水豹",
		"斗木獬", "牛金牛", "女土蝠", "虚日鼠", "危月燕", "室火猪", "壁水貐",
		"奎木狼", "娄金狗", "胃土雉", "昴日鸡", "毕月乌", "觜火猴", "参水猿",
		"井木犴", "鬼金羊", "柳土獐", "星日马", "张月鹿", "翼火蛇", "轸水蚓",
	}
)
View Source
var JMC = []string{
	"冬至", "小寒", "大寒", "立春", "雨水", "惊蛰",
	"春分", "清明", "谷雨", "立夏", "小满", "芒种",
	"夏至", "小暑", "大暑", "立秋", "处暑", "白露",
	"秋分", "寒露", "霜降", "立冬", "小雪", "大雪",
}

二十四节气名称

Functions

func Alias

func Alias(m int) string

func AllShuo

func AllShuo(y int) []float64

农历全年合朔(2个冬至间的朔数据)

func AllZhongQi

func AllZhongQi(y int) []time.Time

两个年份的中气

func ConvHGZToNumber added in v0.6.9

func ConvHGZToNumber(hgz string) (hn int)

转换时辰干支为数字形式

func ConvMGZToNumber added in v0.6.9

func ConvMGZToNumber(mgz string) (n int)

转换月干支为数字形式 寅月1 卯月2 辰月3 ....子月11 丑月12

func Data

func Data(y int) (data []float64)

############################################## 从map数组中获取年份数据

func DayGZ

func DayGZ(y, m, d int) (string, int)

日干支 农历日干支 日干数字

func DiffJieT

func DiffJieT(y, m, d int, moonShuotj12arrt []*MoonShuoTJ12T) (bool, int, int)

y,m,d时间对比12节时间 true在节之后 false在节之前

func DimuS

func DimuS(g, z int) (s string)

干 每个天干匹配地支6次

func Dmj

func Dmj(y, m, d int) string

干支对应年份的地目经信息

func EqualT

func EqualT(jd1, jd11 float64) bool

朔的时间戳比较 时间精确到小时

func GuiRenJue added in v0.6.9

func GuiRenJue(dgz string) (yang, yin string)

阴阳贵人诀

func HourGZ

func HourGZ(daygN, h int) string

阳历时间对应的时辰干支

func JdToLocalTime

func JdToLocalTime(jd float64) time.Time

儒略日转time.Time 这里精确到秒

func JqT

func JqT(y int) []time.Time

节气相关计算 阳历年份节气数组 冬至--冬至

func LeapmB

func LeapmB(y int) bool

func Lu added in v0.6.9

func Lu(gz string) (lus string)

func LunarDay

func LunarDay(cust time.Time, ydx int, allshuo []float64) (string, int)

农历日名称 对应的阳历日数字 农历日数组 阳历日数组 干支数组

func LunarMN

func LunarMN(cust time.Time, mtarr []time.Time, leapmb bool, leapmT time.Time) (int, int)

农历全年月数字这里闰月和非闰月是同一个数字 闰月

func MakeJZ60

func MakeJZ60() []string

生成六十甲子

func MonthGZ

func MonthGZ(yearg string, indexMGZ int, diffJietB bool) (string, error)

月干支

func NaYin

func NaYin(YGZ, MGZ, DGZ, HGZ string) string

func NewShuoWangT

func NewShuoWangT(y, m, d int) (*ShuoWangT, *ShuoWantTS)

这里是通过节来计算的 即当前阳历日期对应的节 如果阳历日期在节之前显示的是上个月(农历)的朔望 如果在节之后显示的是本月(农历)的朔望 如 阳历2020年4月4日 清明节 清明为农历三月节 日期在4日之前显示的是农历二月的朔望 在4日之后显示的是农历三月的朔望 节气数组 0小寒 1立春 2惊蛰 3清明 4立夏 5芒种 6小暑 7立秋 8白露 9 寒露 10立东 11大雪 阳历年月日对应农历月份的 朔 望 上弦 下弦

func Shuox

func Shuox(index int, m1jd, m11jd float64, datax []float64) (lunarShuox []float64)

两冬至间朔 冬至前距离最近的朔 11月到11月

func SolarYmdToJD

func SolarYmdToJD(y, m, d int) (solarJd int)

阳历年月日转换为ind类型的JD数据 用来计算日干支

func Star

func Star(weekN int, dgz string) (name string)

周几的值宿=当前局的基数+7*当前周几+当前周几 如果大于28取余数即为28宿索引号 当日值宿名称 传入当前周数字(0周日) dayz:当日地支 返回 值宿名称 七煞日( b=true七煞 false非七煞) 七煞名称

func WeekDay

func WeekDay(n int) (w string)

func WuHuDun

func WuHuDun(yearg string, indexMGZ int) (mgz string)

五虎盾元

func Wxsk added in v0.6.9

func Wxsk(wx1, wx2 string) (n int)

五行生克 木火土金水 临位相生隔位相克 比和n=0 前者生后者n=1 前者克后者n=-1 后者生前者n=2 后者克前者n=-2

func YearGZ

func YearGZ(solary int, b bool) (aliasGan, aliasZhi string)

年干支

func YueDaXiao

func YueDaXiao(allshuo []float64) []int

从上年十一月开始 到本年十一月结束 十三个月的月大小 计算农历月大小 这里时间精确到日

func YueJiangJQT

func YueJiangJQT(y int) []time.Time

节气时间数组 精确到分钟 上一年冬至(含)开始 0:冬至 1:小寒 2:大寒...

func ZhongQiArrT

func ZhongQiArrT(y int) []time.Time

Types

type Cal

type Cal struct {
	YearGZ  string `json:"year_gz"`
	MonthGZ string `json:"month_gz"`
	DayGZ   string `json:"day_gz"`
	HourGZ  string `json:"hour_gz"`
}

干支信息

func NewCal

func NewCal(y, m, d, h int) *Cal

阳历年月日时 转换为干支

func (*Cal) NaYin

func (c *Cal) NaYin() string

干支纳因

type JQArr

type JQArr struct {
	Name []string    //节气名称
	Time []time.Time //时间精确到秒钟
}

从上年冬至到下年立春的节气名称 节气时间戳 0:冬至(上一年) 1:小寒 2:大寒 3:立春(本年) 4:雨水 惊蛰 春分 清明 谷雨 立夏 小满 11芒种 夏至 小暑 大暑 立秋 处暑 白露 秋分 寒露 霜降 立冬 小雪 23大雪 冬至 小寒 大寒 27:立春(下一年)

func NewJQArr

func NewJQArr(y int) *JQArr

从上年冬至到下年立春的节气名称

func (*JQArr) Jie12ArrT

func (jqarr *JQArr) Jie12ArrT() []time.Time

节气数组 0大雪 1小寒 2立春 3惊蛰 4清明 5立夏 6芒种 7小暑 8立秋 9白露 10寒露 11立东 十一月大雪节 十二月小寒节 正月立春节 二月惊蛰节 三月清明节 四月立夏节 五月芒种节 六月小暑节 七月立秋节 八月白露节 九月寒露节 十月立冬节 (遇到闰月顺延)

func (*JQArr) LinChuT

func (jqarr *JQArr) LinChuT(cust time.Time) (bool, time.Time)

立春和指定时间的比较值 true在立春之后或者等于立春 false在立春之前 同时返回立春时间戳(精确到日)

func (*JQArr) ZhongQiArrT

func (jqarr *JQArr) ZhongQiArrT() []time.Time

各月中气 十一月冬至 十二月大寒 正月雨水 二月春分 三月谷雨 四月小满 五月夏至 六月大暑 七月处暑 八月秋分 九月霜降 十月小雪 中气 从上年冬至开始 13个中气 0:冬至 大寒 雨水 春分 谷雨 小满 夏至 大暑 处暑 秋分 霜降 小雪 冬至

type LeapYl

type LeapYl struct {
	Leapl  []string `json:"leapl"`
	Leaps  []string `json:"leaps"`
	Leapgz []string `json:"leapgz"`
}

闰月月历

type Lunar

type Lunar struct {
	LY       int    `json:"y"`
	LM       int    `json:"m"`
	LRmc     string `json:"rmc"` //农历日名称
	Ydx      string `json:"ydx"` //月大小
	LeapM    int    `json:"leap_m"`
	LeapRmc  string `json:"leap_rmc"` //闰月日名称
	LeapYdx  string `json:"leap_ydx"`
	Sday     int    `json:"sday"`
	LeapSday int    `json:"leap_sday"`
	Week     string `json:"week"`
}

不含闰月年份的数据

func NewLunar

func NewLunar(y, m, d int) *Lunar

农历信息

type MoonSW

type MoonSW float64

func (MoonSW) MoonJD

func (msw MoonSW) MoonJD(y int) (jd float64)

月初jd

type MoonShuoTJ12T

type MoonShuoTJ12T struct {
	MoonShuoT time.Time `json:"moon_shuo"` //农历月朔时间戳
	MoonJieT  time.Time `json:"moon_jie"`  //本月节时间戳
}

农历本月朔(初一日)和本月节

func MoonShuoTJ12ArrT

func MoonShuoTJ12ArrT(j12arrt []time.Time, shuowangt []*ShuoWangT) []*MoonShuoTJ12T

农历朔和本月节 0:上年农历十一月(这里没计算农历闰月 所以农历月份要待计算闰月之后才能最终确定) 这里的T都是阳历时间戳 精确到秒

type ShuoWangF

type ShuoWangF struct {
	ShuoF      float64 `json:"shuof"`
	ShangXianF float64 `json:"shang_xianf"`
	WangF      float64 `json:"wangf"`
	XiaXianF   float64 `json:"xia_xianf"`
}

朔望JD数据

func MoonShuoWangF

func MoonShuoWangF(shuoWangObjArr []*ShuoWangF) []*ShuoWangF

0:阴历上年十一月 1:阴历上年十二月 3:阴历本年正月 十五个月的朔望数据

func NewShuoWangF

func NewShuoWangF(index int, data []float64) []*ShuoWangF

JD数据 从阴历上一年十一月开始到本年十月结束

type ShuoWangT

type ShuoWangT struct {
	ShuoT      time.Time `json:"shuo_t"`
	ShangXianT time.Time `json:"shang_xian_t"`
	WangT      time.Time `json:"wang_t"`
	XiaXianT   time.Time `json:"xia_xian_t"`
}

朔 上弦 望 下弦 时间戳

func MoonShuoWangT

func MoonShuoWangT(shuoWObj []*ShuoWangF) []*ShuoWangT

0:上年十一月 ... (含闰月的年份 14:本年十二月) (不含润月的年份 14:下一年正月) 十四个月的朔 上弦 望 下弦 时间精确到分钟

type ShuoWantTS

type ShuoWantTS struct {
	ShuoTS      string `json:"shuo_ts"`
	ShangXianTS string `json:"shang_xian_ts"`
	WangTS      string `json:"wang_ts"`
	XiaXianTS   string `json:"xia_xian_ts"`
}

朔 上弦 望 下弦 时间戳 string格式

func NewShuoWangTS

func NewShuoWangTS(y, m, d int) *ShuoWantTS

节气数组 0小寒 1立春 2惊蛰 3清明 4立夏 5芒种 6小暑 7立秋 8白露 9 寒露 10立东 11大雪 阳历当月对应农历的朔望时间 string类型输出

type YueJiang

type YueJiang struct {
	Name  string `json:"name"`   //月将
	Zhi   string `json:"zhi"`    //月将对应的地支
	Star  string `json:"star"`   //黄道十二宫星名称
	JieQi string `json:"jie_qi"` //节气
}

月将名称 月将对应的地支 十二宫星

type YueJiangJQ

type YueJiangJQ struct {
	Name []string    //节气名称数组
	Time []time.Time //节气时间数组 精确到分钟秒钟
}

从上年冬至到下年立春的节气名称 节气时间戳 冬至 小寒 大寒 立春 雨水 惊蛰 春分 清明 谷雨 立夏 小满 芒种 夏至 小暑 大暑 立秋 处暑 白露 秋分 寒露 霜降 立冬 小雪 大雪 冬至 小寒 大寒 立春

func NewYueJiangJQ

func NewYueJiangJQ(jqt []time.Time) *YueJiangJQ

上一年冬至到下一年立春的节气

func (*YueJiangJQ) JQ24

func (jq *YueJiangJQ) JQ24() string

全年24节气 文本自动换行

type YueLi

type YueLi struct {
	LunarD []string `json:"ld"`
	SolarD []string `json:"sd"`
	GzD    []string `json:"gzd"`
	RiQin  []string `json:"ri_qin"`
	QiShaB []bool   `json:"qi_sha_b"`
}

月历 这里是农历 初始是农历初一到农历本月结束

type ZHI added in v0.6.9

type ZHI struct {
	Name      string `json:"name"`       //名称
	FangXiang string `json:"fang_xiang"` //方向(后天八卦)
	WuXing    string `json:"wu_xing"`    //五行属性
	Gua       string `json:"gua"`        //八卦名称
	YinYang   bool   `json:"yin_yang"`   //阴阳 true:阳 false:阴
	ShengXiao string `json:"sheng_xiao"` //十二生肖
}

地支属性

func NewZHI added in v0.6.9

func NewZHI(zhi string) (z *ZHI)

地支属性信息

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL