chinese_holidays

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jan 17, 2025 License: MIT Imports: 9 Imported by: 0

README

CI Release GitHub repo size

📖 项目介绍

获取中国节假日信息 是一个golang版本的获取中国节假日信息的sdk,可以很容易判断一个日期是否是工作日或者节假日

🚀 快速开始

go get -u github.com/eyslce/chinese-holidays

判断节假日以及工作日

package main

import (
	"fmt"

	chineseholidays "github.com/eyslce/chinese-holidays"
)

func main() {
	h := chineseholidays.NewHoliday(chineseholidays.WithSavePath("/tmp/"))
	//IsHoliday 判断是否节假日(包括法定假期和周末),入参表示`2006-01-02`的日期字符串
	isHoliday, err := h.IsHoliday("2025-01-01")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("日期%s是否为节假日(包含双休):%t\n", "2025-01-01", isHoliday)

	// IsWeekday 判断是否工作日(包括普通工作日和补班),入参表示`2006-01-02`的日期字符串
	isWeekday, err := h.IsWeekday("2025-01-26")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("日期%s是否为工作日(包括普通工作日和补班):%t\n", "2025-01-26", isWeekday)

	// IsWeekend 判断是否周末,入参表示`2006-01-02`的日期字符串
	isWeekend, err := h.IsWeekend("2025-01-04")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("日期%s是否为周末:%t\n", "2025-01-04", isWeekend)
}

运行结果:

日期2025-01-01是否为节假日(包含双休):true
日期2025-01-26是否为工作日(包括普通工作日和补班):true
日期2025-01-04是否为周末:true

更多用法请参考

holiday_test.go

⚠️ 注意事项

  • 目前只支持2025年以后的数据,之前的数据暂时无法获取。
  • 数据源来自第三方网站,后期会考虑增加更多数据源。

Documentation

Index

Constants

View Source
const (
	HolidayStatusNormal = iota
	HolidayStatusWeekend
	HolidayStatusWorkday
	HolidayStatusHoliday
)

Variables

View Source
var LoadHolidayDataByYear = func(savePath string, year int) (map[string]int, error) {
	path := filepath.Join(savePath, fmt.Sprintf("%d.json", year))
	file, err := os.Open(path)
	if err == nil {
		data, err := readFromFile(file)
		if err != nil {
			return nil, err
		}
		return parseHolidayData(data)
	}
	if !os.IsNotExist(err) {
		return nil, err
	}
	bytes, err := downloadHolidayData(year)
	if err != nil {
		return nil, err
	}
	err = os.WriteFile(path, bytes, fs.ModePerm)
	if err != nil {
		return nil, err
	}
	return parseHolidayData(bytes)
}

Functions

This section is empty.

Types

type Config

type Config struct {
	SavePath string
}

type Holiday

type Holiday struct {
	Cfg *Config
}

func NewHoliday

func NewHoliday(opts ...Option) *Holiday

func (*Holiday) IsHoliday

func (h *Holiday) IsHoliday(date string) (bool, error)

IsHoliday 判断是否节假日(包括法定假期和周末),入参表示`2006-01-02`的日期字符串

func (*Holiday) IsPublicHoliday

func (h *Holiday) IsPublicHoliday(date string) (bool, error)

IsPublicHoliday 判断是否法定假期,入参表示`2006-01-02`的日期字符串

func (*Holiday) IsWeekday

func (h *Holiday) IsWeekday(date string) (bool, error)

IsWeekday 判断是否工作日(包括普通工作日和补班),入参表示`2006-01-02`的日期字符串

func (*Holiday) IsWeekend

func (h *Holiday) IsWeekend(date string) (bool, error)

IsWeekend 判断是否周末,入参表示`2006-01-02`的日期字符串

type Option

type Option func(cfg *Config)

func WithSavePath

func WithSavePath(savePath string) Option

Jump to

Keyboard shortcuts

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