Open hunter-ji opened 3 years ago
因为项目需求,需要去检测用户的农历生日。虽然后来找到了合适的库,但是首先先解释下农历的定义,也是去了解才知道,原来农历不是阴历。
农历
农历属于阴阳合历,其年份分为平年和闰年。平年为十二个月,闰年为十三个月。月份分为大月和小月,大月三十天,小月二十九天,其平均历月等于一个朔望月。
github.com/nosixtools/solarlunar
该库支持1900~2049年。所以项目要跑到2049年后的童鞋就要注意......
当然,该库还支持阳历转农历、节假日计算等,有兴趣大家可以自行去了解下。
该库不支持闰年判断,所以需要自己去实现闰年的判断,其参数类型为Boolean。
Boolean
func IsALeapYear(year int) (result bool) { if year%4 == 0 && year%100 != 0 || year%400 == 0 { result = true return } return }
需要转换的阳历日期格式是固定的,是2006-01-02。此处以农历2021-07-17为例。
2006-01-02
2021-07-17
func main() { lunarDate := "2021-07-17" fmt.Println(solarlunar.LunarToSolar(lunarDate, IsALeapYear(time.Now().Year()))) }
输出为:
2021-08-24
package main import ( "fmt" "time" "github.com/nosixtools/solarlunar" ) func main() { lunarDate := "2021-07-17" fmt.Println(solarlunar.LunarToSolar(lunarDate, IsALeapYear(time.Now().Year()))) } func IsALeapYear(year int) (result bool) { if year%4 == 0 && year%100 != 0 || year%400 == 0 { result = true return } return }
一. 前言
因为项目需求,需要去检测用户的农历生日。虽然后来找到了合适的库,但是首先先解释下
农历
的定义,也是去了解才知道,原来农历不是阴历。农历属于阴阳合历,其年份分为平年和闰年。平年为十二个月,闰年为十三个月。月份分为大月和小月,大月三十天,小月二十九天,其平均历月等于一个朔望月。
二. 环境
三. 库
该库支持1900~2049年。所以项目要跑到2049年后的童鞋就要注意......
当然,该库还支持阳历转农历、节假日计算等,有兴趣大家可以自行去了解下。
四. 使用
1. 判断闰年
该库不支持闰年判断,所以需要自己去实现闰年的判断,其参数类型为
Boolean
。2. 转换
需要转换的阳历日期格式是固定的,是
2006-01-02
。此处以农历2021-07-17
为例。输出为:
五. 全部代码