flagday

package module
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jun 29, 2020 License: MIT Imports: 5 Imported by: 0

README

flagday

Build Status Coverage Status Go Report Card Godoc license

Description

flagday is library for public holidays in Japan.

Specification

  • It is in compliance with the law concerning national holidays.
  • Compatible holidays after 20th July 1948.
  • flagday does not use data file, basically it can be used without updating except for the following conditions.
    • Increase and decrease of holidays and migration due to revision of law
    • Equinox days in the distant future (after 2100)
    • Deviation of equinox due to crustal deformation
    • Holidays of Imperial related condolences and auspicious event

Install

$ go get github.com/pinzolo/flagday

Contribution

  1. Fork (https://github.com/pinzolo/flagday/fork)
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Run test suite with the go test ./... command and confirm that it passes
  6. Run gofmt -s
  7. Create a new Pull Request

Author

pinzolo

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// PublicHolidayStartDate is effective date of the law concerning national holidays.
	// 国民の祝日に関する法律が公布・施行された日
	PublicHolidayStartDate = time.Date(1948, 7, 20, 0, 0, 0, 0, jst())
	// SubstituteHolidayStartDate is effective date of the law concerning substitute holidays.
	// 振替休日に関する改正、および施行された日
	SubstituteHolidayStartDate = time.Date(1973, 4, 12, 0, 0, 0, 0, jst())
	// NationalHolidayStartDate is effective date of the law concerning national holidays.
	// 国民の休日に関する改正、および施行された日
	NationalHolidayStartDate = time.Date(1985, 12, 27, 0, 0, 0, 0, jst())
	// HappyMondayStartDate is effective date of the law concerning Happy Monday.
	// ハッピーマンデー制度が施行された日
	HappyMondayStartDate = time.Date(2000, 1, 1, 0, 0, 0, 0, jst())
	// HappyMondayAddedDate is effective date of the law where Happy Monday was added.
	// 海の日と敬老の日がハッピーマンデーとされた改正の施行日
	HappyMondayAddedDate = time.Date(2003, 1, 1, 0, 0, 0, 0, jst())
)
View Source
var AllDefs = []Definition{
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
	definition{
		// contains filtered or unexported fields
	},
}

AllDefs are all definitions of public holidays.

Functions

func ClearCache

func ClearCache()

ClearCache clear internal cache.

func IsPublicHoliday

func IsPublicHoliday(year, month, day int) bool

IsPublicHoliday returns true if given date units are public holiday.

func IsPublicHolidayTime

func IsPublicHolidayTime(tm time.Time) bool

IsPublicHolidayTime returns true if given time is public holiday.

func WeekNumHolidayFunc

func WeekNumHolidayFunc(weekday time.Weekday) func(def Definition, year int) Holiday

WeekNumHolidayFunc returns function for getting nth weekday holiday.

Types

type DefType

type DefType int

DefType is type of definition.

const (
	// FixedDay means that public holiday has fixed day.
	FixedDay DefType = iota
	// HappyMonday means that public holiday is happy monday.
	HappyMonday
	// EquinoxDay means that public holiday is equinox day.
	EquinoxDay
	// ImperialRelatedHoliday means that public holiday is imperial related holiday (that year's limit).
	ImperialRelatedHoliday
)

type Definition

type Definition interface {
	// Type of definition.
	Type() DefType
	// Name of holiday.
	Name() string
	// Month of holiday.
	Month() int
	// Day of holiday.
	Day() int
	// WeekNum of holiday.
	WeekNum() int
	// Func for getting holiday in given year from definition.
	Func() func(Definition, int) Holiday
	// Begin year of definition.
	Begin() int
	// End year of definition.
	End() int
}

Definition is definition of public holiday in Japan.

func DefsInYear

func DefsInYear(year int) []Definition

DefsInYear returns definitions that are available in given year.

type Holiday

type Holiday interface {
	// Def returns definition of holiday.
	Def() *Definition
	// Year of holiday.
	Year() int
	// Month of holiday.
	Month() int
	// Day of holiday.
	Day() int
	// Name of holiday.
	Name() string
	// Kind of holiday.
	Kind() HolidayKind
	// Time is time.Time instance of holiday (JST)
	Time() time.Time
	// Original is original holiday.
	// This field is only set when holiday is substitute holiday.
	Original() Holiday
	// IsSubstituted returns that this holiday is substituted by substitute holiday.
	IsSubstituted() bool
}

Holiday holds public holiday information.

func FixedDateHoliday

func FixedDateHoliday(def Definition, year int) Holiday

FixedDateHoliday returns fixed date holiday.

func Holidays

func Holidays(defs []Definition, year int) []Holiday

Holidays for given definitions in given year.

func InMonth

func InMonth(year, month int) []Holiday

InMonth returns holiadys in given year and month.

func InYear

func InYear(year int) []Holiday

InYear returns holiadys in given year.

func NewHoliday

func NewHoliday(def *Definition, year, month, day int, name string, kind HolidayKind, original Holiday) Holiday

NewHoliday returns new date with time.

func PublicHolidayOf

func PublicHolidayOf(year, month, day int) (Holiday, error)

PublicHolidayOf returns public holiday information of given date units.

func PublicHolidayTimeOf

func PublicHolidayTimeOf(tm time.Time) (Holiday, error)

PublicHolidayTimeOf returns public holiday information of given time.

type HolidayKind

type HolidayKind int

HolidayKind is kind of holiday.

const (
	// PublicHoliday means that holiday is public holiday.
	PublicHoliday HolidayKind = iota
	// NationalHoliday means that holiday is national holiday.
	NationalHoliday
	// SubstituteHoliday means that holiday is substitute holiday.
	SubstituteHoliday
	// ImperialRelated means that holiday is Imperial related holiday.
	ImperialRelated
)

Jump to

Keyboard shortcuts

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