├── .github └── workflows │ ├── default_branch_test.yaml │ ├── pull_request_ci.yaml │ └── scheduled_update_holidays.yaml ├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── deprecated.go ├── deprecated_test.go ├── docs ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── bench │ ├── v1.0.2.md │ ├── v1.0.3.md │ ├── v1.0.5.md │ ├── v1.0.6.md │ ├── v1.0.7.md │ └── v1.0.8.md └── v0.md ├── gen └── jp_generator.go ├── go.mod ├── goholiday.go ├── goholiday_benchmark_test.go ├── goholiday_example_test.go ├── nholidays ├── am │ └── schedule.go ├── do │ └── schedule.go ├── gr │ └── schedule.go ├── implementation.go ├── implementation_test.go ├── jp │ ├── national_holidays.csv │ └── schedule.go ├── sg │ └── schedule.go └── uk │ ├── england_schedule.go │ ├── northern_ireland_schedule.go │ ├── scotland_schedule.go │ └── wales_schedule.go └── script └── holiday_downloader.sh /.github/workflows/default_branch_test.yaml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | 7 | jobs: 8 | test: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - name: Set up Go 13 | uses: actions/setup-go@v5 14 | with: 15 | go-version-file: go.mod 16 | - name: Test 17 | run: make test 18 | -------------------------------------------------------------------------------- /.github/workflows/pull_request_ci.yaml: -------------------------------------------------------------------------------- 1 | name: Pull Request CI 2 | 3 | on: pull_request 4 | 5 | jobs: 6 | ci: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v4 10 | 11 | - name: Set up Go 12 | uses: actions/setup-go@v5 13 | with: 14 | go-version-file: go.mod 15 | 16 | - name: Test 17 | run: make test 18 | 19 | - name: golangci-lint 20 | uses: golangci/golangci-lint-action@v6 21 | with: 22 | version: latest 23 | -------------------------------------------------------------------------------- /.github/workflows/scheduled_update_holidays.yaml: -------------------------------------------------------------------------------- 1 | name: Scheduled Update Holidays 2 | 3 | on: 4 | schedule: 5 | - cron: '0 0 1 * *' 6 | workflow_dispatch: 7 | 8 | jobs: 9 | updateHolidays: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v4 14 | 15 | - name: Library Install 16 | run: sudo apt-get install nkf 17 | 18 | - name: Set up Go 19 | uses: actions/setup-go@v5 20 | with: 21 | go-version-file: go.mod 22 | 23 | - name: Update Holiday 24 | run: make updateHolidays 25 | 26 | - name: Create Pull Request 27 | uses: peter-evans/create-pull-request@v7 28 | with: 29 | commit-message: update holidays 30 | title: Update Holiday 31 | base: updated_holiday -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | !.github 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 YutaKato 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE.)]]) 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | updateHolidays: 2 | bash script/holiday_downloader.sh 3 | go run gen/jp_generator.go 4 | 5 | test: 6 | go test -v ./... 7 | 8 | bench: 9 | go test -bench . -benchmem -count 5 -run none 10 | 11 | cov: 12 | go test -cover 13 | 14 | fmt: 15 | golangci-lint run ./... -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # goholiday 2 | 3 | [![v1.0.6](https://img.shields.io/github/v/release/yut-kt/goholiday?logoColor=ff69b4&style=social)]() 4 | [![Test](https://github.com/yut-kt/goholiday/actions/workflows/default_branch_test.yaml/badge.svg)](https://github.com/yut-kt/goholiday/actions/workflows/default_branch_test.yaml) 5 | [![coverage](https://img.shields.io/badge/coverage-100%25-green.svg)]() 6 | [![Go Report Card](https://goreportcard.com/badge/github.com/yut-kt/goholiday)](https://goreportcard.com/report/github.com/yut-kt/goholiday) 7 | [![GoDoc](https://godoc.org/github.com/yut-kt/goholiday?status.svg)](https://godoc.org/github.com/yut-kt/goholiday) 8 | [![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](LICENSE) 9 | 10 | **Calculating (holiday, business) days support for golang (Go language).** 11 | 12 | **Provide functions to calculate and judge the business days and holidays in each country.** 13 | 14 | Currently, we only handle holidays for a few countries, but we plan to handle holidays for other countries in the future. 15 | Please Contribute! 16 | 17 | ## Install 18 | ```bash 19 | $ go install github.com/yut-kt/goholiday 20 | ``` 21 | 22 | ## Suggested golang environment 23 | go version >= 1.16.15 24 | 25 | ## Usage 26 | - version >= v1.0.0 27 | - look at [example test file](https://github.com/yut-kt/goholiday/blob/main/goholiday_example_test.go) or [godoc example](https://godoc.org/github.com/yut-kt/goholiday) 28 | 29 | - version = v0.x.x (deprecated) 30 | - look at [docs/v0.md](docs/v0.md) 31 | 32 | ## Supported ccTLD 33 | ``` 34 | support 2022, 2023 35 | |- am (Armenia) 36 | |- do (Dominican Republic) 37 | |- gr (Greece) 38 | |- jp (Japan) 39 | |- sg (Singapore) 40 | |- uk (United Kingdom) 41 | |- England 42 | |- NorthernIreland 43 | |- Scotland 44 | |- Wales 45 | ``` 46 | 47 | ## Contribution 48 | [CONTRIBUTING.md](docs/CONTRIBUTING.md) 49 | 50 | ## License 51 | goholiday is released under the [MIT License](LICENSE). -------------------------------------------------------------------------------- /deprecated.go: -------------------------------------------------------------------------------- 1 | // Package goholiday provides Package ome simple calculation functions. 2 | // These are functions to calculate business days. 3 | package goholiday 4 | 5 | import ( 6 | "time" 7 | 8 | "github.com/yut-kt/goholiday/nholidays/jp" 9 | ) 10 | 11 | var jpHoliday = Goholiday{jp.New(), map[string]struct{}{}} 12 | 13 | // Deprecated: Moved to Goholiday instance (goholiday.go). 14 | // SetUniqueHolidays is a function to set unique holidays. 15 | func SetUniqueHolidays(ts []time.Time) { 16 | jpHoliday.uniqueHolidays = map[string]struct{}{} 17 | jpHoliday.SetUniqueHolidays(ts) 18 | } 19 | 20 | // Deprecated: Moved to Goholiday instance (goholiday.go). 21 | // IsNationalHoliday is a function to decide whether t given national holiday. 22 | func IsNationalHoliday(t time.Time) bool { 23 | return jpHoliday.IsNationalHoliday(t) 24 | } 25 | 26 | // Deprecated: Moved to Goholiday instance (goholiday.go). 27 | // IsHoliday is a function to decide whether t given holiday. 28 | func IsHoliday(t time.Time) bool { 29 | return jpHoliday.IsHoliday(t) 30 | } 31 | 32 | // Deprecated: Moved to Goholiday instance (goholiday.go). 33 | // IsBusinessDay is a function to decide whether t given business day. 34 | func IsBusinessDay(t time.Time) bool { 35 | return jpHoliday.IsBusinessDay(t) 36 | } 37 | 38 | // Deprecated: Moved to Goholiday instance (goholiday.go). 39 | // BusinessDaysBefore is a function that calculates bds business days before given t 40 | func BusinessDaysBefore(t time.Time, bds int) time.Time { 41 | return jpHoliday.BusinessDaysBefore(t, bds) 42 | } 43 | 44 | // Deprecated: Moved to Goholiday instance (goholiday.go). 45 | // BusinessDaysAfter is a function that calculates bds business days after given t 46 | func BusinessDaysAfter(t time.Time, bds int) time.Time { 47 | return jpHoliday.BusinessDaysAfter(t, bds) 48 | } 49 | -------------------------------------------------------------------------------- /deprecated_test.go: -------------------------------------------------------------------------------- 1 | package goholiday_test 2 | 3 | import ( 4 | "testing" 5 | "time" 6 | 7 | "github.com/yut-kt/goholiday" 8 | ) 9 | 10 | const errFmt = "Checking %v is incorrect." 11 | 12 | func TestIsNationalHoliday(t *testing.T) { 13 | cases := []struct { 14 | date time.Time 15 | expect bool 16 | dateType string 17 | }{ 18 | { 19 | date: time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 20 | expect: true, 21 | dateType: "national holiday of weekday", 22 | }, 23 | { 24 | date: time.Date(2017, 9, 23, 0, 0, 0, 0, time.Local), 25 | expect: true, 26 | dateType: "national holiday of holiday", 27 | }, 28 | { 29 | date: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 30 | expect: false, 31 | dateType: "weekday", 32 | }, 33 | { 34 | date: time.Date(2017, 9, 24, 0, 0, 0, 0, time.Local), 35 | expect: false, 36 | dateType: "holiday", 37 | }, 38 | } 39 | 40 | for _, c := range cases { 41 | if goholiday.IsNationalHoliday(c.date) != c.expect { 42 | t.Errorf(errFmt, c.dateType) 43 | } 44 | } 45 | } 46 | 47 | func TestIsHoliday(t *testing.T) { 48 | cases := []struct { 49 | date time.Time 50 | expect bool 51 | dateType string 52 | }{ 53 | { 54 | date: time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 55 | expect: true, 56 | dateType: "national holiday of weekday", 57 | }, 58 | { 59 | date: time.Date(2017, 9, 23, 0, 0, 0, 0, time.Local), 60 | expect: true, 61 | dateType: "national holiday of holiday", 62 | }, 63 | { 64 | date: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 65 | expect: false, 66 | dateType: "weekday", 67 | }, 68 | { 69 | date: time.Date(2017, 9, 24, 0, 0, 0, 0, time.Local), 70 | expect: true, 71 | dateType: "holiday", 72 | }, 73 | } 74 | 75 | for _, c := range cases { 76 | if goholiday.IsHoliday(c.date) != c.expect { 77 | t.Errorf(errFmt, c.dateType) 78 | } 79 | } 80 | } 81 | 82 | func TestIsBusinessDay(t *testing.T) { 83 | cases := []struct { 84 | date time.Time 85 | expect bool 86 | dateType string 87 | }{ 88 | { 89 | date: time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 90 | expect: false, 91 | dateType: "national holiday of weekday", 92 | }, 93 | { 94 | date: time.Date(2017, 9, 23, 0, 0, 0, 0, time.Local), 95 | expect: false, 96 | dateType: "national holiday of holiday", 97 | }, 98 | { 99 | date: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 100 | expect: true, 101 | dateType: "weekday", 102 | }, 103 | { 104 | date: time.Date(2017, 9, 24, 0, 0, 0, 0, time.Local), 105 | expect: false, 106 | dateType: "holiday", 107 | }, 108 | } 109 | 110 | for _, c := range cases { 111 | if goholiday.IsBusinessDay(c.date) != c.expect { 112 | t.Errorf(errFmt, c.dateType) 113 | } 114 | } 115 | } 116 | 117 | func TestBusinessDaysBefore(t *testing.T) { 118 | cases := []struct { 119 | date time.Time 120 | days int 121 | expect time.Time 122 | }{ 123 | { 124 | date: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 125 | days: 1, 126 | expect: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 127 | }, 128 | { 129 | date: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 130 | days: 2, 131 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 132 | }, 133 | { 134 | date: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 135 | days: 1, 136 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 137 | }, 138 | { 139 | date: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 140 | days: 2, 141 | expect: time.Date(2017, 10, 5, 0, 0, 0, 0, time.Local), 142 | }, 143 | { 144 | date: time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 145 | days: 1, 146 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 147 | }, 148 | { 149 | date: time.Date(2017, 10, 8, 0, 0, 0, 0, time.Local), 150 | days: 1, 151 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 152 | }, 153 | } 154 | 155 | for _, c := range cases { 156 | if goholiday.BusinessDaysBefore(c.date, c.days).Format("2006-01-02") != c.expect.Format("2006-01-02") { 157 | t.Errorf(errFmt, c.date.String()) 158 | } 159 | } 160 | } 161 | 162 | func TestBusinessDaysAfter(t *testing.T) { 163 | cases := []struct { 164 | date time.Time 165 | days int 166 | expect time.Time 167 | }{ 168 | { 169 | date: time.Date(2017, 10, 5, 0, 0, 0, 0, time.Local), 170 | days: 1, 171 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 172 | }, 173 | { 174 | date: time.Date(2017, 10, 5, 0, 0, 0, 0, time.Local), 175 | days: 2, 176 | expect: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 177 | }, 178 | { 179 | date: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 180 | days: 1, 181 | expect: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 182 | }, 183 | { 184 | date: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 185 | days: 2, 186 | expect: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 187 | }, 188 | { 189 | date: time.Date(2017, 10, 7, 0, 0, 0, 0, time.Local), 190 | days: 1, 191 | expect: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 192 | }, 193 | { 194 | date: time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 195 | days: 1, 196 | expect: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 197 | }, 198 | } 199 | 200 | for _, c := range cases { 201 | if goholiday.BusinessDaysAfter(c.date, c.days).Format("2006-01-02") != c.expect.Format("2006-01-02") { 202 | t.Errorf(errFmt, c.date.String()) 203 | } 204 | } 205 | } 206 | 207 | // set unique holidays 208 | func TestIsHolidayUnique(t *testing.T) { 209 | goholiday.SetUniqueHolidays([]time.Time{time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local)}) 210 | 211 | date := time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local) 212 | if !goholiday.IsHoliday(date) { 213 | t.Errorf(errFmt, "unique holiday") 214 | } 215 | } 216 | 217 | // set unique holidays 218 | func TestIsBusinessDayUnique(t *testing.T) { 219 | goholiday.SetUniqueHolidays([]time.Time{time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local)}) 220 | 221 | date := time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local) 222 | if goholiday.IsBusinessDay(date) { 223 | t.Errorf(errFmt, "unique holiday") 224 | } 225 | } 226 | 227 | // set unique holidays 228 | func TestBusinessDaysBeforeUnique(t *testing.T) { 229 | uhs := []time.Time{ 230 | time.Date(2017, 10, 5, 0, 0, 0, 0, time.Local), 231 | time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 232 | time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 233 | } 234 | goholiday.SetUniqueHolidays(uhs) 235 | 236 | cases := []struct { 237 | date time.Time 238 | days int 239 | expect time.Time 240 | }{ 241 | { 242 | date: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 243 | days: 1, 244 | expect: time.Date(2017, 10, 4, 0, 0, 0, 0, time.Local), 245 | }, 246 | { 247 | date: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 248 | days: 2, 249 | expect: time.Date(2017, 10, 3, 0, 0, 0, 0, time.Local), 250 | }, 251 | { 252 | date: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 253 | days: 1, 254 | expect: time.Date(2017, 10, 4, 0, 0, 0, 0, time.Local), 255 | }, 256 | { 257 | date: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 258 | days: 2, 259 | expect: time.Date(2017, 10, 3, 0, 0, 0, 0, time.Local), 260 | }, 261 | { 262 | date: time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 263 | days: 1, 264 | expect: time.Date(2017, 10, 4, 0, 0, 0, 0, time.Local), 265 | }, 266 | { 267 | date: time.Date(2017, 10, 8, 0, 0, 0, 0, time.Local), 268 | days: 1, 269 | expect: time.Date(2017, 10, 4, 0, 0, 0, 0, time.Local), 270 | }, 271 | } 272 | 273 | for _, c := range cases { 274 | if goholiday.BusinessDaysBefore(c.date, c.days).Format("2006-01-02") != c.expect.Format("2006-01-02") { 275 | t.Errorf(errFmt, c.date.String()) 276 | } 277 | } 278 | } 279 | 280 | // set unique holidays 281 | func TestBusinessDaysAfterUnique(t *testing.T) { 282 | uhs := []time.Time{ 283 | time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 284 | time.Date(2017, 10, 12, 0, 0, 0, 0, time.Local), 285 | time.Date(2017, 10, 13, 0, 0, 0, 0, time.Local), 286 | } 287 | goholiday.SetUniqueHolidays(uhs) 288 | 289 | cases := []struct { 290 | date time.Time 291 | days int 292 | expect time.Time 293 | }{ 294 | { 295 | date: time.Date(2017, 10, 5, 0, 0, 0, 0, time.Local), 296 | days: 1, 297 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 298 | }, 299 | { 300 | date: time.Date(2017, 10, 5, 0, 0, 0, 0, time.Local), 301 | days: 2, 302 | expect: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 303 | }, 304 | { 305 | date: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 306 | days: 1, 307 | expect: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 308 | }, 309 | { 310 | date: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 311 | days: 2, 312 | expect: time.Date(2017, 10, 16, 0, 0, 0, 0, time.Local), 313 | }, 314 | { 315 | date: time.Date(2017, 10, 7, 0, 0, 0, 0, time.Local), 316 | days: 1, 317 | expect: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 318 | }, 319 | { 320 | date: time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 321 | days: 1, 322 | expect: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 323 | }, 324 | } 325 | 326 | for _, c := range cases { 327 | if goholiday.BusinessDaysAfter(c.date, c.days).Format("2006-01-02") != c.expect.Format("2006-01-02") { 328 | t.Errorf(errFmt, c.date.String()) 329 | } 330 | } 331 | } 332 | -------------------------------------------------------------------------------- /docs/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | yut.kt59@gmail.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. -------------------------------------------------------------------------------- /docs/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to Contribute 2 | 1. Fork ([https://github.com/yut-kt/goholiday/fork](https://github.com/yut-kt/goholiday/fork)) 3 | 2. Checkout the latest version of branch 4 | 3. Create a feature branch 5 | 4. Commit your changes 6 | 5. Create new Pull Request -------------------------------------------------------------------------------- /docs/bench/v1.0.2.md: -------------------------------------------------------------------------------- 1 | # Score 2 | 3 | ``` 4 | go test -bench . -benchmem -count 5 -run none 5 | goos: darwin 6 | goarch: amd64 7 | pkg: github.com/yut-kt/goholiday 8 | cpu: Intel(R) Core(TM) i7-7660U CPU @ 2.50GHz 9 | BenchmarkNew-4 68781 16719 ns/op 22411 B/op 13 allocs/op 10 | BenchmarkNew-4 71174 16013 ns/op 22410 B/op 13 allocs/op 11 | BenchmarkNew-4 71914 16123 ns/op 22407 B/op 13 allocs/op 12 | BenchmarkNew-4 72183 16309 ns/op 22413 B/op 13 allocs/op 13 | BenchmarkNew-4 72439 16093 ns/op 22409 B/op 13 allocs/op 14 | BenchmarkGoholiday_IsNationalHoliday-4 18535 63565 ns/op 5856 B/op 366 allocs/op 15 | BenchmarkGoholiday_IsNationalHoliday-4 18642 64149 ns/op 5856 B/op 366 allocs/op 16 | BenchmarkGoholiday_IsNationalHoliday-4 18790 63830 ns/op 5856 B/op 366 allocs/op 17 | BenchmarkGoholiday_IsNationalHoliday-4 18728 63929 ns/op 5856 B/op 366 allocs/op 18 | BenchmarkGoholiday_IsNationalHoliday-4 18528 63897 ns/op 5856 B/op 366 allocs/op 19 | BenchmarkGoholiday_IsHoliday-4 12166 99196 ns/op 8128 B/op 508 allocs/op 20 | BenchmarkGoholiday_IsHoliday-4 12087 98869 ns/op 8128 B/op 508 allocs/op 21 | BenchmarkGoholiday_IsHoliday-4 10000 103540 ns/op 8128 B/op 508 allocs/op 22 | BenchmarkGoholiday_IsHoliday-4 12100 99207 ns/op 8128 B/op 508 allocs/op 23 | BenchmarkGoholiday_IsHoliday-4 12110 100242 ns/op 8128 B/op 508 allocs/op 24 | BenchmarkGoholiday_IsBusinessDay-4 12073 99515 ns/op 8128 B/op 508 allocs/op 25 | BenchmarkGoholiday_IsBusinessDay-4 10000 100514 ns/op 8128 B/op 508 allocs/op 26 | BenchmarkGoholiday_IsBusinessDay-4 12032 100143 ns/op 8128 B/op 508 allocs/op 27 | BenchmarkGoholiday_IsBusinessDay-4 10000 100442 ns/op 8128 B/op 508 allocs/op 28 | BenchmarkGoholiday_IsBusinessDay-4 10000 100043 ns/op 8128 B/op 508 allocs/op 29 | BenchmarkGoholiday_SetUniqueHolidays-4 18898 64122 ns/op 5857 B/op 366 allocs/op 30 | BenchmarkGoholiday_SetUniqueHolidays-4 18706 64231 ns/op 5857 B/op 366 allocs/op 31 | BenchmarkGoholiday_SetUniqueHolidays-4 18601 63503 ns/op 5857 B/op 366 allocs/op 32 | BenchmarkGoholiday_SetUniqueHolidays-4 18752 63261 ns/op 5857 B/op 366 allocs/op 33 | BenchmarkGoholiday_SetUniqueHolidays-4 18760 63633 ns/op 5857 B/op 366 allocs/op 34 | BenchmarkGoholiday_BusinessDaysAfter-4 4898 231133 ns/op 12048 B/op 753 allocs/op 35 | BenchmarkGoholiday_BusinessDaysAfter-4 5212 231417 ns/op 12048 B/op 753 allocs/op 36 | BenchmarkGoholiday_BusinessDaysAfter-4 5199 231796 ns/op 12048 B/op 753 allocs/op 37 | BenchmarkGoholiday_BusinessDaysAfter-4 4910 230377 ns/op 12048 B/op 753 allocs/op 38 | BenchmarkGoholiday_BusinessDaysAfter-4 4598 229147 ns/op 12048 B/op 753 allocs/op 39 | BenchmarkGoholiday_BusinessDaysBefore-4 4418 231554 ns/op 12048 B/op 753 allocs/op 40 | BenchmarkGoholiday_BusinessDaysBefore-4 4540 230337 ns/op 12048 B/op 753 allocs/op 41 | BenchmarkGoholiday_BusinessDaysBefore-4 4731 232437 ns/op 12048 B/op 753 allocs/op 42 | BenchmarkGoholiday_BusinessDaysBefore-4 5179 230361 ns/op 12048 B/op 753 allocs/op 43 | BenchmarkGoholiday_BusinessDaysBefore-4 4686 230201 ns/op 12048 B/op 753 allocs/op 44 | PASS 45 | ok github.com/yut-kt/goholiday 55.445s 46 | ``` -------------------------------------------------------------------------------- /docs/bench/v1.0.3.md: -------------------------------------------------------------------------------- 1 | # Score 2 | 3 | ``` 4 | go test -bench . -benchmem -count 5 -run none 5 | goos: darwin 6 | goarch: amd64 7 | pkg: github.com/yut-kt/goholiday 8 | cpu: Intel(R) Core(TM) i7-7660U CPU @ 2.50GHz 9 | BenchmarkNew-4 69016 16265 ns/op 22413 B/op 13 allocs/op 10 | BenchmarkNew-4 72590 16016 ns/op 22407 B/op 13 allocs/op 11 | BenchmarkNew-4 72140 15997 ns/op 22407 B/op 13 allocs/op 12 | BenchmarkNew-4 73176 16041 ns/op 22407 B/op 13 allocs/op 13 | BenchmarkNew-4 72681 16000 ns/op 22409 B/op 13 allocs/op 14 | BenchmarkGoholiday_IsNationalHoliday-4 18828 64074 ns/op 5856 B/op 366 allocs/op 15 | BenchmarkGoholiday_IsNationalHoliday-4 18631 63837 ns/op 5856 B/op 366 allocs/op 16 | BenchmarkGoholiday_IsNationalHoliday-4 18517 64237 ns/op 5856 B/op 366 allocs/op 17 | BenchmarkGoholiday_IsNationalHoliday-4 18538 63856 ns/op 5856 B/op 366 allocs/op 18 | BenchmarkGoholiday_IsNationalHoliday-4 18249 63878 ns/op 5856 B/op 366 allocs/op 19 | BenchmarkGoholiday_IsHoliday-4 12063 98915 ns/op 8128 B/op 508 allocs/op 20 | BenchmarkGoholiday_IsHoliday-4 12120 98708 ns/op 8128 B/op 508 allocs/op 21 | BenchmarkGoholiday_IsHoliday-4 11103 104071 ns/op 8128 B/op 508 allocs/op 22 | BenchmarkGoholiday_IsHoliday-4 12121 98592 ns/op 8128 B/op 508 allocs/op 23 | BenchmarkGoholiday_IsHoliday-4 12176 105123 ns/op 8128 B/op 508 allocs/op 24 | BenchmarkGoholiday_IsBusinessDay-4 10000 103315 ns/op 8128 B/op 508 allocs/op 25 | BenchmarkGoholiday_IsBusinessDay-4 12088 98982 ns/op 8128 B/op 508 allocs/op 26 | BenchmarkGoholiday_IsBusinessDay-4 10000 100258 ns/op 8128 B/op 508 allocs/op 27 | BenchmarkGoholiday_IsBusinessDay-4 12040 99633 ns/op 8128 B/op 508 allocs/op 28 | BenchmarkGoholiday_IsBusinessDay-4 12076 99086 ns/op 8128 B/op 508 allocs/op 29 | BenchmarkGoholiday_SetUniqueHolidays-4 18519 64241 ns/op 5857 B/op 366 allocs/op 30 | BenchmarkGoholiday_SetUniqueHolidays-4 18739 63296 ns/op 5857 B/op 366 allocs/op 31 | BenchmarkGoholiday_SetUniqueHolidays-4 18708 63342 ns/op 5857 B/op 366 allocs/op 32 | BenchmarkGoholiday_SetUniqueHolidays-4 18712 63680 ns/op 5857 B/op 366 allocs/op 33 | BenchmarkGoholiday_SetUniqueHolidays-4 18733 63673 ns/op 5857 B/op 366 allocs/op 34 | BenchmarkGoholiday_BusinessDaysAfter-4 6898 151868 ns/op 12048 B/op 753 allocs/op 35 | BenchmarkGoholiday_BusinessDaysAfter-4 7821 152349 ns/op 12048 B/op 753 allocs/op 36 | BenchmarkGoholiday_BusinessDaysAfter-4 6870 150953 ns/op 12048 B/op 753 allocs/op 37 | BenchmarkGoholiday_BusinessDaysAfter-4 6658 150935 ns/op 12048 B/op 753 allocs/op 38 | BenchmarkGoholiday_BusinessDaysAfter-4 7924 151473 ns/op 12048 B/op 753 allocs/op 39 | BenchmarkGoholiday_BusinessDaysBefore-4 7872 151948 ns/op 12048 B/op 753 allocs/op 40 | BenchmarkGoholiday_BusinessDaysBefore-4 7050 152058 ns/op 12048 B/op 753 allocs/op 41 | BenchmarkGoholiday_BusinessDaysBefore-4 7880 151574 ns/op 12048 B/op 753 allocs/op 42 | BenchmarkGoholiday_BusinessDaysBefore-4 7116 151604 ns/op 12048 B/op 753 allocs/op 43 | BenchmarkGoholiday_BusinessDaysBefore-4 7896 151583 ns/op 12048 B/op 753 allocs/op 44 | PASS 45 | ok github.com/yut-kt/goholiday 57.589s 46 | ``` -------------------------------------------------------------------------------- /docs/bench/v1.0.5.md: -------------------------------------------------------------------------------- 1 | # Score 2 | ``` 3 | $ go test -bench . -benchmem -count 5 -run none 4 | goos: darwin 5 | goarch: arm64 6 | pkg: github.com/yut-kt/goholiday 7 | BenchmarkNew-10 77124 14097 ns/op 42375 B/op 7 allocs/op 8 | BenchmarkNew-10 82850 14081 ns/op 42375 B/op 7 allocs/op 9 | BenchmarkNew-10 84435 14225 ns/op 42375 B/op 7 allocs/op 10 | BenchmarkNew-10 85592 14248 ns/op 42375 B/op 7 allocs/op 11 | BenchmarkNew-10 85176 14219 ns/op 42375 B/op 7 allocs/op 12 | BenchmarkGoholiday_IsNationalHoliday-10 37434 31987 ns/op 5856 B/op 366 allocs/op 13 | BenchmarkGoholiday_IsNationalHoliday-10 37510 31664 ns/op 5856 B/op 366 allocs/op 14 | BenchmarkGoholiday_IsNationalHoliday-10 37370 31877 ns/op 5856 B/op 366 allocs/op 15 | BenchmarkGoholiday_IsNationalHoliday-10 37644 32243 ns/op 5856 B/op 366 allocs/op 16 | BenchmarkGoholiday_IsNationalHoliday-10 37532 31899 ns/op 5856 B/op 366 allocs/op 17 | BenchmarkGoholiday_IsHoliday-10 27950 43345 ns/op 8128 B/op 508 allocs/op 18 | BenchmarkGoholiday_IsHoliday-10 27920 43313 ns/op 8128 B/op 508 allocs/op 19 | BenchmarkGoholiday_IsHoliday-10 27672 43089 ns/op 8128 B/op 508 allocs/op 20 | BenchmarkGoholiday_IsHoliday-10 27964 42982 ns/op 8128 B/op 508 allocs/op 21 | BenchmarkGoholiday_IsHoliday-10 27826 43035 ns/op 8128 B/op 508 allocs/op 22 | BenchmarkGoholiday_IsBusinessDay-10 27478 43297 ns/op 8128 B/op 508 allocs/op 23 | BenchmarkGoholiday_IsBusinessDay-10 27697 43446 ns/op 8128 B/op 508 allocs/op 24 | BenchmarkGoholiday_IsBusinessDay-10 27716 43232 ns/op 8128 B/op 508 allocs/op 25 | BenchmarkGoholiday_IsBusinessDay-10 27676 43172 ns/op 8128 B/op 508 allocs/op 26 | BenchmarkGoholiday_IsBusinessDay-10 27738 43378 ns/op 8128 B/op 508 allocs/op 27 | BenchmarkGoholiday_SetUniqueHolidays-10 38074 31951 ns/op 5856 B/op 366 allocs/op 28 | BenchmarkGoholiday_SetUniqueHolidays-10 37982 31858 ns/op 5856 B/op 366 allocs/op 29 | BenchmarkGoholiday_SetUniqueHolidays-10 37845 31848 ns/op 5856 B/op 366 allocs/op 30 | BenchmarkGoholiday_SetUniqueHolidays-10 38277 31400 ns/op 5856 B/op 366 allocs/op 31 | BenchmarkGoholiday_SetUniqueHolidays-10 37850 31691 ns/op 5856 B/op 366 allocs/op 32 | BenchmarkGoholiday_BusinessDaysAfter-10 18076 65667 ns/op 12048 B/op 753 allocs/op 33 | BenchmarkGoholiday_BusinessDaysAfter-10 17983 66937 ns/op 12048 B/op 753 allocs/op 34 | BenchmarkGoholiday_BusinessDaysAfter-10 18231 66585 ns/op 12048 B/op 753 allocs/op 35 | BenchmarkGoholiday_BusinessDaysAfter-10 17708 70528 ns/op 12048 B/op 753 allocs/op 36 | BenchmarkGoholiday_BusinessDaysAfter-10 17454 67029 ns/op 12048 B/op 753 allocs/op 37 | BenchmarkGoholiday_BusinessDaysBefore-10 17913 66962 ns/op 12048 B/op 753 allocs/op 38 | BenchmarkGoholiday_BusinessDaysBefore-10 17766 67616 ns/op 12048 B/op 753 allocs/op 39 | BenchmarkGoholiday_BusinessDaysBefore-10 17625 67752 ns/op 12048 B/op 753 allocs/op 40 | BenchmarkGoholiday_BusinessDaysBefore-10 17757 67349 ns/op 12048 B/op 753 allocs/op 41 | BenchmarkGoholiday_BusinessDaysBefore-10 17790 66925 ns/op 12048 B/op 753 allocs/op 42 | PASS 43 | ok github.com/yut-kt/goholiday 57.352s 44 | ``` -------------------------------------------------------------------------------- /docs/bench/v1.0.6.md: -------------------------------------------------------------------------------- 1 | # Score 2 | ``` 3 | $ go test -bench . -benchmem -count 5 -run none 4 | goos: darwin 5 | goarch: arm64 6 | pkg: github.com/yut-kt/goholiday 7 | BenchmarkNew-12 79984 13085 ns/op 42375 B/op 7 allocs/op 8 | BenchmarkNew-12 93198 13324 ns/op 42375 B/op 7 allocs/op 9 | BenchmarkNew-12 93420 13415 ns/op 42375 B/op 7 allocs/op 10 | BenchmarkNew-12 85468 13360 ns/op 42375 B/op 7 allocs/op 11 | BenchmarkNew-12 89742 13285 ns/op 42376 B/op 7 allocs/op 12 | BenchmarkGoholiday_IsNationalHoliday-12 42303 29020 ns/op 5856 B/op 366 allocs/op 13 | BenchmarkGoholiday_IsNationalHoliday-12 41546 28491 ns/op 5856 B/op 366 allocs/op 14 | BenchmarkGoholiday_IsNationalHoliday-12 41554 28864 ns/op 5856 B/op 366 allocs/op 15 | BenchmarkGoholiday_IsNationalHoliday-12 41583 28882 ns/op 5856 B/op 366 allocs/op 16 | BenchmarkGoholiday_IsNationalHoliday-12 41703 28985 ns/op 5856 B/op 366 allocs/op 17 | BenchmarkGoholiday_IsHoliday-12 30775 39136 ns/op 8128 B/op 508 allocs/op 18 | BenchmarkGoholiday_IsHoliday-12 30190 39374 ns/op 8128 B/op 508 allocs/op 19 | BenchmarkGoholiday_IsHoliday-12 30613 39318 ns/op 8128 B/op 508 allocs/op 20 | BenchmarkGoholiday_IsHoliday-12 30726 40038 ns/op 8128 B/op 508 allocs/op 21 | BenchmarkGoholiday_IsHoliday-12 30562 40115 ns/op 8128 B/op 508 allocs/op 22 | BenchmarkGoholiday_IsBusinessDay-12 29947 39978 ns/op 8128 B/op 508 allocs/op 23 | BenchmarkGoholiday_IsBusinessDay-12 30261 39579 ns/op 8128 B/op 508 allocs/op 24 | BenchmarkGoholiday_IsBusinessDay-12 30164 39439 ns/op 8128 B/op 508 allocs/op 25 | BenchmarkGoholiday_IsBusinessDay-12 29936 40088 ns/op 8128 B/op 508 allocs/op 26 | BenchmarkGoholiday_IsBusinessDay-12 29887 39679 ns/op 8128 B/op 508 allocs/op 27 | BenchmarkGoholiday_SetUniqueHolidays-12 41427 28403 ns/op 5856 B/op 366 allocs/op 28 | BenchmarkGoholiday_SetUniqueHolidays-12 41937 29126 ns/op 5856 B/op 366 allocs/op 29 | BenchmarkGoholiday_SetUniqueHolidays-12 41332 28998 ns/op 5856 B/op 366 allocs/op 30 | BenchmarkGoholiday_SetUniqueHolidays-12 42133 28862 ns/op 5856 B/op 366 allocs/op 31 | BenchmarkGoholiday_SetUniqueHolidays-12 41314 29365 ns/op 5856 B/op 366 allocs/op 32 | BenchmarkGoholiday_BusinessDaysAfter-12 19584 61063 ns/op 12048 B/op 753 allocs/op 33 | BenchmarkGoholiday_BusinessDaysAfter-12 19690 61339 ns/op 12048 B/op 753 allocs/op 34 | BenchmarkGoholiday_BusinessDaysAfter-12 19684 61210 ns/op 12048 B/op 753 allocs/op 35 | BenchmarkGoholiday_BusinessDaysAfter-12 19171 61532 ns/op 12048 B/op 753 allocs/op 36 | BenchmarkGoholiday_BusinessDaysAfter-12 19692 60958 ns/op 12048 B/op 753 allocs/op 37 | BenchmarkGoholiday_BusinessDaysBefore-12 19203 61553 ns/op 12048 B/op 753 allocs/op 38 | BenchmarkGoholiday_BusinessDaysBefore-12 19454 62000 ns/op 12048 B/op 753 allocs/op 39 | BenchmarkGoholiday_BusinessDaysBefore-12 19081 62520 ns/op 12048 B/op 753 allocs/op 40 | BenchmarkGoholiday_BusinessDaysBefore-12 19138 62519 ns/op 12048 B/op 753 allocs/op 41 | BenchmarkGoholiday_BusinessDaysBefore-12 19383 62537 ns/op 12048 B/op 753 allocs/op 42 | PASS 43 | ok github.com/yut-kt/goholiday 56.333s 44 | ``` -------------------------------------------------------------------------------- /docs/bench/v1.0.7.md: -------------------------------------------------------------------------------- 1 | # Score 2 | ``` 3 | $ go test -bench . -benchmem -count 5 -run none 4 | goos: darwin 5 | goarch: arm64 6 | pkg: github.com/yut-kt/goholiday 7 | cpu: Apple M2 Max 8 | BenchmarkNew-12 92829 11002 ns/op 42448 B/op 10 allocs/op 9 | BenchmarkNew-12 116565 10724 ns/op 42448 B/op 10 allocs/op 10 | BenchmarkNew-12 116733 10485 ns/op 42448 B/op 10 allocs/op 11 | BenchmarkNew-12 103888 10542 ns/op 42448 B/op 10 allocs/op 12 | BenchmarkNew-12 117871 10652 ns/op 42448 B/op 10 allocs/op 13 | BenchmarkGoholiday_IsNationalHoliday-12 56443 21510 ns/op 5856 B/op 366 allocs/op 14 | BenchmarkGoholiday_IsNationalHoliday-12 55551 22505 ns/op 5856 B/op 366 allocs/op 15 | BenchmarkGoholiday_IsNationalHoliday-12 54312 21845 ns/op 5856 B/op 366 allocs/op 16 | BenchmarkGoholiday_IsNationalHoliday-12 55785 21648 ns/op 5856 B/op 366 allocs/op 17 | BenchmarkGoholiday_IsNationalHoliday-12 53740 21374 ns/op 5856 B/op 366 allocs/op 18 | BenchmarkGoholiday_IsHoliday-12 38042 31429 ns/op 8128 B/op 508 allocs/op 19 | BenchmarkGoholiday_IsHoliday-12 38312 31684 ns/op 8128 B/op 508 allocs/op 20 | BenchmarkGoholiday_IsHoliday-12 38134 31327 ns/op 8128 B/op 508 allocs/op 21 | BenchmarkGoholiday_IsHoliday-12 38434 31619 ns/op 8128 B/op 508 allocs/op 22 | BenchmarkGoholiday_IsHoliday-12 37945 31722 ns/op 8128 B/op 508 allocs/op 23 | BenchmarkGoholiday_IsBusinessDay-12 37452 32723 ns/op 8128 B/op 508 allocs/op 24 | BenchmarkGoholiday_IsBusinessDay-12 37606 32639 ns/op 8128 B/op 508 allocs/op 25 | BenchmarkGoholiday_IsBusinessDay-12 37552 32849 ns/op 8128 B/op 508 allocs/op 26 | BenchmarkGoholiday_IsBusinessDay-12 36326 32273 ns/op 8128 B/op 508 allocs/op 27 | BenchmarkGoholiday_IsBusinessDay-12 36870 31916 ns/op 8128 B/op 508 allocs/op 28 | BenchmarkGoholiday_SetUniqueHolidays-12 53863 22140 ns/op 5856 B/op 366 allocs/op 29 | BenchmarkGoholiday_SetUniqueHolidays-12 53025 24239 ns/op 5856 B/op 366 allocs/op 30 | BenchmarkGoholiday_SetUniqueHolidays-12 52702 22549 ns/op 5856 B/op 366 allocs/op 31 | BenchmarkGoholiday_SetUniqueHolidays-12 54223 22498 ns/op 5856 B/op 366 allocs/op 32 | BenchmarkGoholiday_SetUniqueHolidays-12 53764 22811 ns/op 5856 B/op 366 allocs/op 33 | BenchmarkGoholiday_BusinessDaysAfter-12 24236 49290 ns/op 12048 B/op 753 allocs/op 34 | BenchmarkGoholiday_BusinessDaysAfter-12 23856 49451 ns/op 12048 B/op 753 allocs/op 35 | BenchmarkGoholiday_BusinessDaysAfter-12 24105 49339 ns/op 12048 B/op 753 allocs/op 36 | BenchmarkGoholiday_BusinessDaysAfter-12 24415 49645 ns/op 12048 B/op 753 allocs/op 37 | BenchmarkGoholiday_BusinessDaysAfter-12 24259 49500 ns/op 12048 B/op 753 allocs/op 38 | BenchmarkGoholiday_BusinessDaysBefore-12 24433 49149 ns/op 12048 B/op 753 allocs/op 39 | BenchmarkGoholiday_BusinessDaysBefore-12 24370 49456 ns/op 12048 B/op 753 allocs/op 40 | BenchmarkGoholiday_BusinessDaysBefore-12 24465 49909 ns/op 12048 B/op 753 allocs/op 41 | BenchmarkGoholiday_BusinessDaysBefore-12 24250 49292 ns/op 12048 B/op 753 allocs/op 42 | BenchmarkGoholiday_BusinessDaysBefore-12 24445 49387 ns/op 12048 B/op 753 allocs/op 43 | PASS 44 | ok github.com/yut-kt/goholiday 53.308s 45 | ``` -------------------------------------------------------------------------------- /docs/bench/v1.0.8.md: -------------------------------------------------------------------------------- 1 | # Score 2 | ``` 3 | $ go test -bench . -benchmem -count 5 -run none 4 | goos: darwin 5 | goarch: arm64 6 | pkg: github.com/yut-kt/goholiday 7 | cpu: Apple M2 Max 8 | BenchmarkNew-12 92698 11128 ns/op 42448 B/op 10 allocs/op 9 | BenchmarkNew-12 115059 10635 ns/op 42448 B/op 10 allocs/op 10 | BenchmarkNew-12 103862 10395 ns/op 42448 B/op 10 allocs/op 11 | BenchmarkNew-12 117406 10532 ns/op 42448 B/op 10 allocs/op 12 | BenchmarkNew-12 101347 10965 ns/op 42448 B/op 10 allocs/op 13 | BenchmarkGoholiday_IsNationalHoliday-12 56550 21480 ns/op 5856 B/op 366 allocs/op 14 | BenchmarkGoholiday_IsNationalHoliday-12 56870 20861 ns/op 5856 B/op 366 allocs/op 15 | BenchmarkGoholiday_IsNationalHoliday-12 56984 21093 ns/op 5856 B/op 366 allocs/op 16 | BenchmarkGoholiday_IsNationalHoliday-12 56946 21154 ns/op 5856 B/op 366 allocs/op 17 | BenchmarkGoholiday_IsNationalHoliday-12 55084 21548 ns/op 5856 B/op 366 allocs/op 18 | BenchmarkGoholiday_IsHoliday-12 37874 31195 ns/op 8128 B/op 508 allocs/op 19 | BenchmarkGoholiday_IsHoliday-12 37978 31247 ns/op 8128 B/op 508 allocs/op 20 | BenchmarkGoholiday_IsHoliday-12 37614 31411 ns/op 8128 B/op 508 allocs/op 21 | BenchmarkGoholiday_IsHoliday-12 38220 31110 ns/op 8128 B/op 508 allocs/op 22 | BenchmarkGoholiday_IsHoliday-12 38284 31012 ns/op 8128 B/op 508 allocs/op 23 | BenchmarkGoholiday_IsBusinessDay-12 38596 30994 ns/op 8128 B/op 508 allocs/op 24 | BenchmarkGoholiday_IsBusinessDay-12 36662 31268 ns/op 8128 B/op 508 allocs/op 25 | BenchmarkGoholiday_IsBusinessDay-12 38239 31201 ns/op 8128 B/op 508 allocs/op 26 | BenchmarkGoholiday_IsBusinessDay-12 37833 31143 ns/op 8128 B/op 508 allocs/op 27 | BenchmarkGoholiday_IsBusinessDay-12 38389 31148 ns/op 8128 B/op 508 allocs/op 28 | BenchmarkGoholiday_SetUniqueHolidays-12 56060 21593 ns/op 5856 B/op 366 allocs/op 29 | BenchmarkGoholiday_SetUniqueHolidays-12 55754 21276 ns/op 5856 B/op 366 allocs/op 30 | BenchmarkGoholiday_SetUniqueHolidays-12 56163 21352 ns/op 5856 B/op 366 allocs/op 31 | BenchmarkGoholiday_SetUniqueHolidays-12 55880 21813 ns/op 5856 B/op 366 allocs/op 32 | BenchmarkGoholiday_SetUniqueHolidays-12 54984 22370 ns/op 5856 B/op 366 allocs/op 33 | BenchmarkGoholiday_BusinessDaysAfter-12 24999 47938 ns/op 12048 B/op 753 allocs/op 34 | BenchmarkGoholiday_BusinessDaysAfter-12 24898 48307 ns/op 12048 B/op 753 allocs/op 35 | BenchmarkGoholiday_BusinessDaysAfter-12 24840 48283 ns/op 12048 B/op 753 allocs/op 36 | BenchmarkGoholiday_BusinessDaysAfter-12 24885 48033 ns/op 12048 B/op 753 allocs/op 37 | BenchmarkGoholiday_BusinessDaysAfter-12 24840 49885 ns/op 12048 B/op 753 allocs/op 38 | BenchmarkGoholiday_BusinessDaysBefore-12 24741 49354 ns/op 12048 B/op 753 allocs/op 39 | BenchmarkGoholiday_BusinessDaysBefore-12 24788 49198 ns/op 12048 B/op 753 allocs/op 40 | BenchmarkGoholiday_BusinessDaysBefore-12 23826 50001 ns/op 12048 B/op 753 allocs/op 41 | BenchmarkGoholiday_BusinessDaysBefore-12 24889 48319 ns/op 12048 B/op 753 allocs/op 42 | BenchmarkGoholiday_BusinessDaysBefore-12 24502 49094 ns/op 12048 B/op 753 allocs/op 43 | PASS 44 | ok github.com/yut-kt/goholiday 52.682s 45 | ``` -------------------------------------------------------------------------------- /docs/v0.md: -------------------------------------------------------------------------------- 1 | ### func IsNationalHoliday 2 | ```go 3 | func IsNationalHoliday(t time.Time) bool 4 | ``` 5 | IsNationalHoliday is a function to decide whether t given national holiday 6 | 7 | ### func SetUniqueHolidays 8 | ```go 9 | func SetUniqueHolidays(ts []time.Time) void 10 | ``` 11 | SetUniqueHolidays is a function to set unique holidays 12 | 13 | #### func IsHoliday 14 | ```go 15 | func IsHoliday(t time.Time) bool 16 | ``` 17 | IsHoliday is a function to decide whether t given holiday 18 | 19 | #### func IsBusinessDay 20 | ```go 21 | func IsBusinessDay(t time.Time) bool 22 | ``` 23 | IsBusinessDay is a function to decide whether t given business day 24 | 25 | #### func BusinessDaysBefore 26 | ```go 27 | func BusinessDaysBefore(t time.Time, businessDays int) time.Time 28 | ``` 29 | BusinessDaysBefore is a function that calculates bds business days before given t 30 | 31 | #### func BusinessDaysAfter 32 | ```go 33 | func BusinessDaysAfter(t time.Time, businessDays int) time.Time 34 | ``` 35 | BusinessDaysAfter is a function that calculates bds business days after given t 36 | -------------------------------------------------------------------------------- /gen/jp_generator.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bytes" 5 | "encoding/csv" 6 | "flag" 7 | "fmt" 8 | "go/format" 9 | "io" 10 | "log" 11 | "os" 12 | "text/template" 13 | "time" 14 | ) 15 | 16 | type Holiday struct { 17 | Date string 18 | Name string 19 | } 20 | 21 | var filename = flag.String("output", "nholidays/jp/schedule.go", "output file name") 22 | 23 | //go:generate go run . -output nholidays/jp/schedule.go 24 | func main() { 25 | f, err := os.Open("nholidays/jp/national_holidays.csv") 26 | if err != nil { 27 | panic(err) 28 | } 29 | r := csv.NewReader(f) 30 | 31 | var ( 32 | h []*Holiday 33 | isSkip bool 34 | ) 35 | 36 | for i := 0; ; i++ { 37 | record, err := r.Read() 38 | if err == io.EOF { 39 | break 40 | } 41 | if err != nil { 42 | panic(err) 43 | } 44 | if i == 0 { 45 | continue 46 | } 47 | 48 | var holiday Holiday 49 | for i, v := range record { 50 | switch i { 51 | case 0: 52 | t, err := time.Parse("2006/1/2", v) 53 | if err != nil { 54 | panic(err) 55 | } 56 | tmp := t.Format("2006-01-02") 57 | if tmp >= "2000-01-01" { 58 | holiday.Date = t.Format("2006-01-02") 59 | isSkip = false 60 | } else { 61 | isSkip = true 62 | } 63 | case 1: 64 | if !isSkip { 65 | holiday.Name = v 66 | h = append(h, &holiday) 67 | } 68 | } 69 | } 70 | } 71 | 72 | var v = struct { 73 | URL string 74 | Holiday []*Holiday 75 | }{ 76 | "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv", 77 | h, 78 | } 79 | 80 | var buf bytes.Buffer 81 | err = template.Must(template.New("prog").Parse(prog)).Execute(&buf, v) 82 | if err != nil { 83 | log.Fatal(err) 84 | } 85 | data, err := format.Source(buf.Bytes()) 86 | if err != nil { 87 | log.Fatal(err) 88 | } 89 | fmt.Println(*filename) 90 | 91 | err = os.WriteFile(*filename, data, 0644) 92 | if err != nil { 93 | log.Fatal(err) 94 | } 95 | } 96 | 97 | const prog = ` 98 | // Code generated by jp_generator.go; DO NOT EDIT. 99 | // Based on holiday from {{.URL}}. 100 | 101 | package jp 102 | 103 | import ( 104 | "time" 105 | 106 | "github.com/yut-kt/goholiday/nholidays" 107 | ) 108 | 109 | func New() *nholidays.ScheduleImpl { 110 | return nholidays.New( 111 | map[time.Weekday]struct{}{ 112 | time.Saturday: {}, 113 | time.Sunday: {}, 114 | }, 115 | map[string]string{ 116 | {{range .Holiday}} "{{.Date}}": "{{.Name}}", 117 | {{end}} 118 | }, 119 | ) 120 | } 121 | 122 | ` 123 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/yut-kt/goholiday 2 | 3 | go 1.24 4 | -------------------------------------------------------------------------------- /goholiday.go: -------------------------------------------------------------------------------- 1 | package goholiday 2 | 3 | import "time" 4 | 5 | const dateFormat = "2006-01-02" 6 | 7 | type Schedule interface { 8 | GetNationalHolidays() map[string]string 9 | GetWeekdayHolidays() map[time.Weekday]struct{} 10 | } 11 | 12 | type Goholiday struct { 13 | schedule Schedule 14 | uniqueHolidays map[string]struct{} 15 | } 16 | 17 | func New(schedule Schedule) *Goholiday { 18 | return &Goholiday{ 19 | schedule: schedule, 20 | uniqueHolidays: map[string]struct{}{}, 21 | } 22 | } 23 | 24 | func (g *Goholiday) IsNationalHoliday(t time.Time) bool { 25 | _, exist := g.schedule.GetNationalHolidays()[t.Format(dateFormat)] 26 | return exist 27 | } 28 | 29 | func (g *Goholiday) IsHoliday(t time.Time) bool { 30 | return g.isWeekdayHoliday(t) || g.IsNationalHoliday(t) || g.isUniqueHoliday(t) 31 | } 32 | 33 | func (g *Goholiday) isWeekdayHoliday(t time.Time) bool { 34 | _, exist := g.schedule.GetWeekdayHolidays()[t.Weekday()] 35 | return exist 36 | } 37 | 38 | func (g *Goholiday) SetUniqueHolidays(ts []time.Time) { 39 | for _, t := range ts { 40 | g.uniqueHolidays[t.Format(dateFormat)] = struct{}{} 41 | } 42 | } 43 | 44 | func (g *Goholiday) isUniqueHoliday(t time.Time) bool { 45 | _, exist := g.uniqueHolidays[t.Format(dateFormat)] 46 | return exist 47 | } 48 | 49 | func (g *Goholiday) IsBusinessDay(t time.Time) bool { 50 | return !g.IsHoliday(t) 51 | } 52 | 53 | func (g *Goholiday) BusinessDaysBefore(t time.Time, bds int) time.Time { 54 | return g.travelBusinessDays(t, bds, -1) 55 | } 56 | 57 | func (g *Goholiday) BusinessDaysAfter(t time.Time, bds int) time.Time { 58 | return g.travelBusinessDays(t, bds, 1) 59 | } 60 | 61 | func (g *Goholiday) travelBusinessDays(t time.Time, bds int, course int) time.Time { 62 | duration := time.Hour * 24 * time.Duration(course) 63 | for tbds := 0; tbds != bds; { 64 | if t = t.Add(duration); !g.IsHoliday(t) { 65 | tbds++ 66 | } 67 | } 68 | return t 69 | } 70 | -------------------------------------------------------------------------------- /goholiday_benchmark_test.go: -------------------------------------------------------------------------------- 1 | package goholiday_test 2 | 3 | import ( 4 | "testing" 5 | "time" 6 | 7 | "github.com/yut-kt/goholiday/nholidays" 8 | "github.com/yut-kt/goholiday/nholidays/jp" 9 | "github.com/yut-kt/goholiday/nholidays/uk" 10 | 11 | "github.com/yut-kt/goholiday" 12 | ) 13 | 14 | func BenchmarkNew(b *testing.B) { 15 | for i := 0; i < b.N; i++ { 16 | // Japan 17 | goholiday.New(jp.New()) 18 | // England in UK 19 | goholiday.New(uk.NewEngland()) 20 | // Original Schedule 21 | goholiday.New(nholidays.New( 22 | map[time.Weekday]struct{}{}, 23 | map[string]string{"2022-05-01": "my holiday"}, 24 | )) 25 | } 26 | } 27 | 28 | func getDatesBy2020() []time.Time { 29 | days := 366 30 | dates := make([]time.Time, days) 31 | for i := 0; i < days; i++ { 32 | dates[i] = time.Date(2020, 01, i+1, 0, 0, 0, 0, time.Local) 33 | } 34 | return dates 35 | } 36 | 37 | func BenchmarkGoholiday_IsNationalHoliday(b *testing.B) { 38 | dates := getDatesBy2020() 39 | gh := goholiday.New(jp.New()) 40 | 41 | b.ResetTimer() 42 | 43 | for i := 0; i < b.N; i++ { 44 | for _, date := range dates { 45 | gh.IsNationalHoliday(date) 46 | } 47 | } 48 | } 49 | 50 | func BenchmarkGoholiday_IsHoliday(b *testing.B) { 51 | dates := getDatesBy2020() 52 | gh := goholiday.New(jp.New()) 53 | 54 | b.ResetTimer() 55 | 56 | for i := 0; i < b.N; i++ { 57 | for _, date := range dates { 58 | gh.IsHoliday(date) 59 | } 60 | } 61 | } 62 | 63 | func BenchmarkGoholiday_IsBusinessDay(b *testing.B) { 64 | dates := getDatesBy2020() 65 | gh := goholiday.New(jp.New()) 66 | 67 | b.ResetTimer() 68 | 69 | for i := 0; i < b.N; i++ { 70 | for _, date := range dates { 71 | gh.IsBusinessDay(date) 72 | } 73 | } 74 | } 75 | 76 | func BenchmarkGoholiday_SetUniqueHolidays(b *testing.B) { 77 | dates := getDatesBy2020() 78 | gh := goholiday.New(jp.New()) 79 | 80 | b.ResetTimer() 81 | 82 | for i := 0; i < b.N; i++ { 83 | gh.SetUniqueHolidays(dates) 84 | } 85 | } 86 | 87 | func BenchmarkGoholiday_BusinessDaysAfter(b *testing.B) { 88 | start := time.Date(2020, 1, 1, 0, 0, 0, 0, time.Local) 89 | afterDays := 365 90 | gh := goholiday.New(jp.New()) 91 | 92 | b.ResetTimer() 93 | 94 | for i := 0; i < b.N; i++ { 95 | gh.BusinessDaysAfter(start, afterDays) 96 | } 97 | } 98 | 99 | func BenchmarkGoholiday_BusinessDaysBefore(b *testing.B) { 100 | start := time.Date(2020, 12, 31, 0, 0, 0, 0, time.Local) 101 | beforeDays := 365 102 | gh := goholiday.New(jp.New()) 103 | 104 | b.ResetTimer() 105 | 106 | for i := 0; i < b.N; i++ { 107 | gh.BusinessDaysBefore(start, beforeDays) 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /goholiday_example_test.go: -------------------------------------------------------------------------------- 1 | package goholiday_test 2 | 3 | import ( 4 | "fmt" 5 | "time" 6 | 7 | "github.com/yut-kt/goholiday/nholidays" 8 | 9 | "github.com/yut-kt/goholiday/nholidays/uk" 10 | 11 | "github.com/yut-kt/goholiday" 12 | "github.com/yut-kt/goholiday/nholidays/jp" 13 | ) 14 | 15 | func ExampleGoholiday() { 16 | // Japan Schedule 17 | ghj := goholiday.New(jp.New()) 18 | fmt.Println(ghj.IsNationalHoliday(time.Date(2022, 1, 1, 0, 0, 0, 0, time.Local))) 19 | 20 | // England Schedule 21 | ghe := goholiday.New(uk.NewEngland()) 22 | fmt.Println(ghe.IsNationalHoliday(time.Date(2022, 1, 1, 0, 0, 0, 0, time.Local))) 23 | 24 | // Original Schedule 25 | mySchedule := nholidays.New( 26 | map[time.Weekday]struct{}{}, 27 | map[string]string{"2022-05-01": "my holiday"}, 28 | ) 29 | ghMine := goholiday.New(mySchedule) 30 | fmt.Println(ghMine.IsNationalHoliday(time.Date(2022, 5, 1, 0, 0, 0, 0, time.Local))) 31 | 32 | // Output: 33 | // true 34 | // true 35 | // true 36 | } 37 | 38 | func ExampleNew() { 39 | gh := goholiday.New(jp.New()) 40 | fmt.Printf("%T", gh) 41 | // Output: 42 | // *goholiday.Goholiday 43 | } 44 | 45 | func ExampleGoholiday_IsNationalHoliday() { 46 | targets := []time.Time{ 47 | // national holiday of weekday" 48 | time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 49 | // national holiday of holiday 50 | time.Date(2017, 9, 23, 0, 0, 0, 0, time.Local), 51 | // business day 52 | time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 53 | // Sunday 54 | time.Date(2017, 9, 24, 0, 0, 0, 0, time.Local), 55 | } 56 | 57 | gh := goholiday.New(jp.New()) 58 | for _, target := range targets { 59 | fmt.Println(gh.IsNationalHoliday(target)) 60 | } 61 | // Output: 62 | // true 63 | // true 64 | // false 65 | // false 66 | } 67 | 68 | func ExampleGoholiday_IsHoliday() { 69 | targets := []time.Time{ 70 | // national holiday of weekday" 71 | time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 72 | // national holiday of holiday 73 | time.Date(2017, 9, 23, 0, 0, 0, 0, time.Local), 74 | // business day 75 | time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 76 | // Sunday 77 | time.Date(2017, 9, 24, 0, 0, 0, 0, time.Local), 78 | } 79 | gh := goholiday.New(jp.New()) 80 | for _, target := range targets { 81 | fmt.Println(gh.IsHoliday(target)) 82 | } 83 | // Output: 84 | // true 85 | // true 86 | // false 87 | // true 88 | } 89 | 90 | func ExampleGoholiday_IsBusinessDay() { 91 | targets := []time.Time{ 92 | // national holiday of weekday" 93 | time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 94 | // national holiday of holiday 95 | time.Date(2017, 9, 23, 0, 0, 0, 0, time.Local), 96 | // business day 97 | time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 98 | // Sunday 99 | time.Date(2017, 9, 24, 0, 0, 0, 0, time.Local), 100 | } 101 | gh := goholiday.New(jp.New()) 102 | for _, target := range targets { 103 | fmt.Println(gh.IsBusinessDay(target)) 104 | } 105 | // Output: 106 | // false 107 | // false 108 | // true 109 | // false 110 | } 111 | 112 | func ExampleGoholiday_BusinessDaysBefore() { 113 | cases := []struct { 114 | date time.Time 115 | days int 116 | expect time.Time 117 | }{ 118 | { 119 | date: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 120 | days: 1, 121 | expect: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 122 | }, 123 | { 124 | date: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 125 | days: 2, 126 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 127 | }, 128 | { 129 | date: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 130 | days: 1, 131 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 132 | }, 133 | { 134 | date: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 135 | days: 2, 136 | expect: time.Date(2017, 10, 5, 0, 0, 0, 0, time.Local), 137 | }, 138 | { 139 | date: time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 140 | days: 1, 141 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 142 | }, 143 | { 144 | date: time.Date(2017, 10, 8, 0, 0, 0, 0, time.Local), 145 | days: 1, 146 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 147 | }, 148 | } 149 | 150 | gh := goholiday.New(jp.New()) 151 | for _, c := range cases { 152 | fmt.Println(gh.BusinessDaysBefore(c.date, c.days).Format("2006-01-02") == c.expect.Format("2006-01-02")) 153 | } 154 | // Output: 155 | // true 156 | // true 157 | // true 158 | // true 159 | // true 160 | // true 161 | } 162 | 163 | func ExampleGoholiday_BusinessDaysAfter() { 164 | cases := []struct { 165 | date time.Time 166 | days int 167 | expect time.Time 168 | }{ 169 | { 170 | date: time.Date(2017, 10, 5, 0, 0, 0, 0, time.Local), 171 | days: 1, 172 | expect: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 173 | }, 174 | { 175 | date: time.Date(2017, 10, 5, 0, 0, 0, 0, time.Local), 176 | days: 2, 177 | expect: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 178 | }, 179 | { 180 | date: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 181 | days: 1, 182 | expect: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 183 | }, 184 | { 185 | date: time.Date(2017, 10, 6, 0, 0, 0, 0, time.Local), 186 | days: 2, 187 | expect: time.Date(2017, 10, 11, 0, 0, 0, 0, time.Local), 188 | }, 189 | { 190 | date: time.Date(2017, 10, 7, 0, 0, 0, 0, time.Local), 191 | days: 1, 192 | expect: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 193 | }, 194 | { 195 | date: time.Date(2017, 10, 9, 0, 0, 0, 0, time.Local), 196 | days: 1, 197 | expect: time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local), 198 | }, 199 | } 200 | 201 | gh := goholiday.New(jp.New()) 202 | for _, c := range cases { 203 | fmt.Println(gh.BusinessDaysAfter(c.date, c.days).Format("2006-01-02") == c.expect.Format("2006-01-02")) 204 | } 205 | // Output: 206 | // true 207 | // true 208 | // true 209 | // true 210 | // true 211 | // true 212 | } 213 | 214 | func ExampleGoholiday_SetUniqueHolidays() { 215 | gh := goholiday.New(jp.New()) 216 | gh.SetUniqueHolidays([]time.Time{time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local)}) 217 | date := time.Date(2017, 10, 10, 0, 0, 0, 0, time.Local) 218 | fmt.Println(gh.IsHoliday(date)) 219 | fmt.Println(gh.IsBusinessDay(date)) 220 | fmt.Println(gh.IsNationalHoliday(date)) 221 | // Output: 222 | // true 223 | // false 224 | // false 225 | } 226 | -------------------------------------------------------------------------------- /nholidays/am/schedule.go: -------------------------------------------------------------------------------- 1 | package am 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/yut-kt/goholiday/nholidays" 7 | ) 8 | 9 | func New() *nholidays.ScheduleImpl { 10 | return nholidays.New( 11 | map[time.Weekday]struct{}{ 12 | time.Saturday: {}, 13 | time.Sunday: {}, 14 | }, 15 | map[string]string{ 16 | "2022-01-01": "New Year's Day", 17 | "2022-01-02": "New Year Holiday", 18 | "2022-01-06": "Armenian Christmas", 19 | "2022-01-28": "National Army Day", 20 | "2022-03-08": "International Women's Day", 21 | "2022-04-24": "Armenian Remembrance Day", 22 | "2022-05-01": "Labour Day", 23 | "2022-05-09": "Victory and Peace Day", 24 | "2022-05-28": "1st Republic Day", 25 | "2022-07-05": "Constitution Day", 26 | "2022-09-21": "Independence Day", 27 | "2022-12-31": "New Year's Eve", 28 | "2023-01-01": "New Year's Day", 29 | "2023-01-02": "New Year Holiday", 30 | "2023-01-06": "Armenian Christmas", 31 | "2023-01-28": "National Army Day", 32 | "2023-03-08": "International Women's Day", 33 | "2023-04-24": "Armenian Remembrance Day", 34 | "2023-05-01": "Labour Day", 35 | "2023-05-09": "Victory and Peace Day", 36 | "2023-05-28": "1st Republic Day", 37 | }, 38 | ) 39 | } 40 | -------------------------------------------------------------------------------- /nholidays/do/schedule.go: -------------------------------------------------------------------------------- 1 | package do 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/yut-kt/goholiday/nholidays" 7 | ) 8 | 9 | func New() *nholidays.ScheduleImpl { 10 | return nholidays.New( 11 | map[time.Weekday]struct{}{ 12 | time.Saturday: {}, 13 | time.Sunday: {}, 14 | }, 15 | map[string]string{ 16 | "2022-01-01": "New Year's Day", 17 | "2022-01-10": "Epiphany Holiday", 18 | "2022-01-21": "Lady of Altagracia Day", 19 | "2022-01-24": "Juan Pablo Duarte Day Holiday", 20 | "2022-02-27": "Independence Day", 21 | "2022-04-14": "Maundy Thursday", 22 | "2022-04-15": "Good Friday", 23 | "2022-05-01": "Labor Day", 24 | "2022-05-02": "Labor Day Holiday", 25 | "2022-06-16": "Corpus Christi", 26 | "2022-08-16": "Restoration Day", 27 | "2022-09-24": "Lady of Mercedes Day", 28 | "2022-11-06": "Constitution Day", 29 | "2022-12-25": "Christmas Day", 30 | "2023-01-01": "New Year's Day", 31 | "2023-01-09": "Epiphany Holiday", 32 | "2023-01-21": "Lady of Altagracia Day", 33 | "2023-01-30": "Juan Pablo Duarte Day Holiday", 34 | "2023-02-27": "Independence Day", 35 | "2023-04-06": "Maundy Thursday", 36 | "2023-04-07": "Good Friday", 37 | "2023-05-01": "Labor Day", 38 | "2023-06-08": "Corpus Christi", 39 | }, 40 | ) 41 | } 42 | -------------------------------------------------------------------------------- /nholidays/gr/schedule.go: -------------------------------------------------------------------------------- 1 | package gr 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/yut-kt/goholiday/nholidays" 7 | ) 8 | 9 | func New() *nholidays.ScheduleImpl { 10 | return nholidays.New( 11 | map[time.Weekday]struct{}{ 12 | time.Saturday: {}, 13 | time.Sunday: {}, 14 | }, 15 | map[string]string{ 16 | "2022-01-01": "New Year's Day", 17 | "2022-01-06": "Epiphany", 18 | "2022-01-25": "Public Holiday", 19 | "2022-01-26": "Public Holiday", 20 | "2022-03-07": "Ash Monday / Clean Monday", 21 | "2022-03-25": "Independence Day", 22 | "2022-04-22": "Orthodox Good Friday", 23 | "2022-04-24": "Orthodox Easter", 24 | "2022-04-25": "Orthodox Easter Monday", 25 | "2022-05-02": "May Day Holiday", 26 | "2022-06-12": "Orthodox Whit Sunday", 27 | "2022-06-13": "Orthodox Whit Monday", 28 | "2022-08-15": "Assumption Day", 29 | "2022-10-28": "Ochi Day", 30 | "2022-12-25": "Christmas Day", 31 | "2022-12-26": "Synaxis of the Mother of God", 32 | "2023-01-01": "New Year's Day", 33 | "2023-01-06": "Epiphany", 34 | "2023-02-27": "Ash Monday / Clean Monday", 35 | "2023-03-25": "Independence Day", 36 | "2023-04-14": "Orthodox Good Friday", 37 | "2023-04-16": "Orthodox Easter", 38 | "2023-04-17": "Orthodox Easter Monday", 39 | "2023-05-01": "May Day", 40 | "2023-06-04": "Orthodox Whit Sunday", 41 | "2023-06-05": "Orthodox Whit Monday", 42 | "2023-08-15": "Assumption Day", 43 | "2023-10-28": "Ochi Day", 44 | "2023-12-25": "Christmas Day", 45 | "2023-12-26": "Synaxis of the Mother of God", 46 | }, 47 | ) 48 | } 49 | -------------------------------------------------------------------------------- /nholidays/implementation.go: -------------------------------------------------------------------------------- 1 | package nholidays 2 | 3 | import "time" 4 | 5 | type ScheduleImpl struct { 6 | weekdayHolidays map[time.Weekday]struct{} 7 | nationalHolidays map[string]string 8 | } 9 | 10 | func (s *ScheduleImpl) GetWeekdayHolidays() map[time.Weekday]struct{} { 11 | return s.weekdayHolidays 12 | } 13 | 14 | func (s *ScheduleImpl) GetNationalHolidays() map[string]string { 15 | return s.nationalHolidays 16 | } 17 | 18 | func New(whs map[time.Weekday]struct{}, nhs map[string]string) *ScheduleImpl { 19 | return &ScheduleImpl{ 20 | weekdayHolidays: whs, 21 | nationalHolidays: nhs, 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /nholidays/implementation_test.go: -------------------------------------------------------------------------------- 1 | package nholidays_test 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/yut-kt/goholiday/nholidays/do" 7 | 8 | "github.com/yut-kt/goholiday/nholidays/am" 9 | 10 | "github.com/yut-kt/goholiday/nholidays/gr" 11 | 12 | "github.com/yut-kt/goholiday/nholidays/sg" 13 | 14 | "github.com/yut-kt/goholiday" 15 | "github.com/yut-kt/goholiday/nholidays/jp" 16 | "github.com/yut-kt/goholiday/nholidays/uk" 17 | ) 18 | 19 | func TestImplementation(t *testing.T) { 20 | // am 21 | goholiday.New(am.New()) 22 | 23 | // do 24 | goholiday.New(do.New()) 25 | 26 | // gr 27 | goholiday.New(gr.New()) 28 | 29 | // jp 30 | goholiday.New(jp.New()) 31 | 32 | // sg 33 | goholiday.New(sg.New()) 34 | 35 | // uk 36 | goholiday.New(uk.NewEngland()) 37 | goholiday.New(uk.NewScotland()) 38 | goholiday.New(uk.NewNorthernIreland()) 39 | goholiday.New(uk.NewWales()) 40 | 41 | } 42 | -------------------------------------------------------------------------------- /nholidays/jp/national_holidays.csv: -------------------------------------------------------------------------------- 1 | 国民の祝日・休日月日,国民の祝日・休日名称 2 | 1955/1/1,元日 3 | 1955/1/15,成人の日 4 | 1955/3/21,春分の日 5 | 1955/4/29,天皇誕生日 6 | 1955/5/3,憲法記念日 7 | 1955/5/5,こどもの日 8 | 1955/9/24,秋分の日 9 | 1955/11/3,文化の日 10 | 1955/11/23,勤労感謝の日 11 | 1956/1/1,元日 12 | 1956/1/15,成人の日 13 | 1956/3/21,春分の日 14 | 1956/4/29,天皇誕生日 15 | 1956/5/3,憲法記念日 16 | 1956/5/5,こどもの日 17 | 1956/9/23,秋分の日 18 | 1956/11/3,文化の日 19 | 1956/11/23,勤労感謝の日 20 | 1957/1/1,元日 21 | 1957/1/15,成人の日 22 | 1957/3/21,春分の日 23 | 1957/4/29,天皇誕生日 24 | 1957/5/3,憲法記念日 25 | 1957/5/5,こどもの日 26 | 1957/9/23,秋分の日 27 | 1957/11/3,文化の日 28 | 1957/11/23,勤労感謝の日 29 | 1958/1/1,元日 30 | 1958/1/15,成人の日 31 | 1958/3/21,春分の日 32 | 1958/4/29,天皇誕生日 33 | 1958/5/3,憲法記念日 34 | 1958/5/5,こどもの日 35 | 1958/9/23,秋分の日 36 | 1958/11/3,文化の日 37 | 1958/11/23,勤労感謝の日 38 | 1959/1/1,元日 39 | 1959/1/15,成人の日 40 | 1959/3/21,春分の日 41 | 1959/4/10,結婚の儀 42 | 1959/4/29,天皇誕生日 43 | 1959/5/3,憲法記念日 44 | 1959/5/5,こどもの日 45 | 1959/9/24,秋分の日 46 | 1959/11/3,文化の日 47 | 1959/11/23,勤労感謝の日 48 | 1960/1/1,元日 49 | 1960/1/15,成人の日 50 | 1960/3/20,春分の日 51 | 1960/4/29,天皇誕生日 52 | 1960/5/3,憲法記念日 53 | 1960/5/5,こどもの日 54 | 1960/9/23,秋分の日 55 | 1960/11/3,文化の日 56 | 1960/11/23,勤労感謝の日 57 | 1961/1/1,元日 58 | 1961/1/15,成人の日 59 | 1961/3/21,春分の日 60 | 1961/4/29,天皇誕生日 61 | 1961/5/3,憲法記念日 62 | 1961/5/5,こどもの日 63 | 1961/9/23,秋分の日 64 | 1961/11/3,文化の日 65 | 1961/11/23,勤労感謝の日 66 | 1962/1/1,元日 67 | 1962/1/15,成人の日 68 | 1962/3/21,春分の日 69 | 1962/4/29,天皇誕生日 70 | 1962/5/3,憲法記念日 71 | 1962/5/5,こどもの日 72 | 1962/9/23,秋分の日 73 | 1962/11/3,文化の日 74 | 1962/11/23,勤労感謝の日 75 | 1963/1/1,元日 76 | 1963/1/15,成人の日 77 | 1963/3/21,春分の日 78 | 1963/4/29,天皇誕生日 79 | 1963/5/3,憲法記念日 80 | 1963/5/5,こどもの日 81 | 1963/9/24,秋分の日 82 | 1963/11/3,文化の日 83 | 1963/11/23,勤労感謝の日 84 | 1964/1/1,元日 85 | 1964/1/15,成人の日 86 | 1964/3/20,春分の日 87 | 1964/4/29,天皇誕生日 88 | 1964/5/3,憲法記念日 89 | 1964/5/5,こどもの日 90 | 1964/9/23,秋分の日 91 | 1964/11/3,文化の日 92 | 1964/11/23,勤労感謝の日 93 | 1965/1/1,元日 94 | 1965/1/15,成人の日 95 | 1965/3/21,春分の日 96 | 1965/4/29,天皇誕生日 97 | 1965/5/3,憲法記念日 98 | 1965/5/5,こどもの日 99 | 1965/9/23,秋分の日 100 | 1965/11/3,文化の日 101 | 1965/11/23,勤労感謝の日 102 | 1966/1/1,元日 103 | 1966/1/15,成人の日 104 | 1966/3/21,春分の日 105 | 1966/4/29,天皇誕生日 106 | 1966/5/3,憲法記念日 107 | 1966/5/5,こどもの日 108 | 1966/9/15,敬老の日 109 | 1966/9/23,秋分の日 110 | 1966/10/10,体育の日 111 | 1966/11/3,文化の日 112 | 1966/11/23,勤労感謝の日 113 | 1967/1/1,元日 114 | 1967/1/15,成人の日 115 | 1967/2/11,建国記念の日 116 | 1967/3/21,春分の日 117 | 1967/4/29,天皇誕生日 118 | 1967/5/3,憲法記念日 119 | 1967/5/5,こどもの日 120 | 1967/9/15,敬老の日 121 | 1967/9/24,秋分の日 122 | 1967/10/10,体育の日 123 | 1967/11/3,文化の日 124 | 1967/11/23,勤労感謝の日 125 | 1968/1/1,元日 126 | 1968/1/15,成人の日 127 | 1968/2/11,建国記念の日 128 | 1968/3/20,春分の日 129 | 1968/4/29,天皇誕生日 130 | 1968/5/3,憲法記念日 131 | 1968/5/5,こどもの日 132 | 1968/9/15,敬老の日 133 | 1968/9/23,秋分の日 134 | 1968/10/10,体育の日 135 | 1968/11/3,文化の日 136 | 1968/11/23,勤労感謝の日 137 | 1969/1/1,元日 138 | 1969/1/15,成人の日 139 | 1969/2/11,建国記念の日 140 | 1969/3/21,春分の日 141 | 1969/4/29,天皇誕生日 142 | 1969/5/3,憲法記念日 143 | 1969/5/5,こどもの日 144 | 1969/9/15,敬老の日 145 | 1969/9/23,秋分の日 146 | 1969/10/10,体育の日 147 | 1969/11/3,文化の日 148 | 1969/11/23,勤労感謝の日 149 | 1970/1/1,元日 150 | 1970/1/15,成人の日 151 | 1970/2/11,建国記念の日 152 | 1970/3/21,春分の日 153 | 1970/4/29,天皇誕生日 154 | 1970/5/3,憲法記念日 155 | 1970/5/5,こどもの日 156 | 1970/9/15,敬老の日 157 | 1970/9/23,秋分の日 158 | 1970/10/10,体育の日 159 | 1970/11/3,文化の日 160 | 1970/11/23,勤労感謝の日 161 | 1971/1/1,元日 162 | 1971/1/15,成人の日 163 | 1971/2/11,建国記念の日 164 | 1971/3/21,春分の日 165 | 1971/4/29,天皇誕生日 166 | 1971/5/3,憲法記念日 167 | 1971/5/5,こどもの日 168 | 1971/9/15,敬老の日 169 | 1971/9/24,秋分の日 170 | 1971/10/10,体育の日 171 | 1971/11/3,文化の日 172 | 1971/11/23,勤労感謝の日 173 | 1972/1/1,元日 174 | 1972/1/15,成人の日 175 | 1972/2/11,建国記念の日 176 | 1972/3/20,春分の日 177 | 1972/4/29,天皇誕生日 178 | 1972/5/3,憲法記念日 179 | 1972/5/5,こどもの日 180 | 1972/9/15,敬老の日 181 | 1972/9/23,秋分の日 182 | 1972/10/10,体育の日 183 | 1972/11/3,文化の日 184 | 1972/11/23,勤労感謝の日 185 | 1973/1/1,元日 186 | 1973/1/15,成人の日 187 | 1973/2/11,建国記念の日 188 | 1973/3/21,春分の日 189 | 1973/4/29,天皇誕生日 190 | 1973/4/30,休日 191 | 1973/5/3,憲法記念日 192 | 1973/5/5,こどもの日 193 | 1973/9/15,敬老の日 194 | 1973/9/23,秋分の日 195 | 1973/9/24,休日 196 | 1973/10/10,体育の日 197 | 1973/11/3,文化の日 198 | 1973/11/23,勤労感謝の日 199 | 1974/1/1,元日 200 | 1974/1/15,成人の日 201 | 1974/2/11,建国記念の日 202 | 1974/3/21,春分の日 203 | 1974/4/29,天皇誕生日 204 | 1974/5/3,憲法記念日 205 | 1974/5/5,こどもの日 206 | 1974/5/6,休日 207 | 1974/9/15,敬老の日 208 | 1974/9/16,休日 209 | 1974/9/23,秋分の日 210 | 1974/10/10,体育の日 211 | 1974/11/3,文化の日 212 | 1974/11/4,休日 213 | 1974/11/23,勤労感謝の日 214 | 1975/1/1,元日 215 | 1975/1/15,成人の日 216 | 1975/2/11,建国記念の日 217 | 1975/3/21,春分の日 218 | 1975/4/29,天皇誕生日 219 | 1975/5/3,憲法記念日 220 | 1975/5/5,こどもの日 221 | 1975/9/15,敬老の日 222 | 1975/9/24,秋分の日 223 | 1975/10/10,体育の日 224 | 1975/11/3,文化の日 225 | 1975/11/23,勤労感謝の日 226 | 1975/11/24,休日 227 | 1976/1/1,元日 228 | 1976/1/15,成人の日 229 | 1976/2/11,建国記念の日 230 | 1976/3/20,春分の日 231 | 1976/4/29,天皇誕生日 232 | 1976/5/3,憲法記念日 233 | 1976/5/5,こどもの日 234 | 1976/9/15,敬老の日 235 | 1976/9/23,秋分の日 236 | 1976/10/10,体育の日 237 | 1976/10/11,休日 238 | 1976/11/3,文化の日 239 | 1976/11/23,勤労感謝の日 240 | 1977/1/1,元日 241 | 1977/1/15,成人の日 242 | 1977/2/11,建国記念の日 243 | 1977/3/21,春分の日 244 | 1977/4/29,天皇誕生日 245 | 1977/5/3,憲法記念日 246 | 1977/5/5,こどもの日 247 | 1977/9/15,敬老の日 248 | 1977/9/23,秋分の日 249 | 1977/10/10,体育の日 250 | 1977/11/3,文化の日 251 | 1977/11/23,勤労感謝の日 252 | 1978/1/1,元日 253 | 1978/1/2,休日 254 | 1978/1/15,成人の日 255 | 1978/1/16,休日 256 | 1978/2/11,建国記念の日 257 | 1978/3/21,春分の日 258 | 1978/4/29,天皇誕生日 259 | 1978/5/3,憲法記念日 260 | 1978/5/5,こどもの日 261 | 1978/9/15,敬老の日 262 | 1978/9/23,秋分の日 263 | 1978/10/10,体育の日 264 | 1978/11/3,文化の日 265 | 1978/11/23,勤労感謝の日 266 | 1979/1/1,元日 267 | 1979/1/15,成人の日 268 | 1979/2/11,建国記念の日 269 | 1979/2/12,休日 270 | 1979/3/21,春分の日 271 | 1979/4/29,天皇誕生日 272 | 1979/4/30,休日 273 | 1979/5/3,憲法記念日 274 | 1979/5/5,こどもの日 275 | 1979/9/15,敬老の日 276 | 1979/9/24,秋分の日 277 | 1979/10/10,体育の日 278 | 1979/11/3,文化の日 279 | 1979/11/23,勤労感謝の日 280 | 1980/1/1,元日 281 | 1980/1/15,成人の日 282 | 1980/2/11,建国記念の日 283 | 1980/3/20,春分の日 284 | 1980/4/29,天皇誕生日 285 | 1980/5/3,憲法記念日 286 | 1980/5/5,こどもの日 287 | 1980/9/15,敬老の日 288 | 1980/9/23,秋分の日 289 | 1980/10/10,体育の日 290 | 1980/11/3,文化の日 291 | 1980/11/23,勤労感謝の日 292 | 1980/11/24,休日 293 | 1981/1/1,元日 294 | 1981/1/15,成人の日 295 | 1981/2/11,建国記念の日 296 | 1981/3/21,春分の日 297 | 1981/4/29,天皇誕生日 298 | 1981/5/3,憲法記念日 299 | 1981/5/4,休日 300 | 1981/5/5,こどもの日 301 | 1981/9/15,敬老の日 302 | 1981/9/23,秋分の日 303 | 1981/10/10,体育の日 304 | 1981/11/3,文化の日 305 | 1981/11/23,勤労感謝の日 306 | 1982/1/1,元日 307 | 1982/1/15,成人の日 308 | 1982/2/11,建国記念の日 309 | 1982/3/21,春分の日 310 | 1982/3/22,休日 311 | 1982/4/29,天皇誕生日 312 | 1982/5/3,憲法記念日 313 | 1982/5/5,こどもの日 314 | 1982/9/15,敬老の日 315 | 1982/9/23,秋分の日 316 | 1982/10/10,体育の日 317 | 1982/10/11,休日 318 | 1982/11/3,文化の日 319 | 1982/11/23,勤労感謝の日 320 | 1983/1/1,元日 321 | 1983/1/15,成人の日 322 | 1983/2/11,建国記念の日 323 | 1983/3/21,春分の日 324 | 1983/4/29,天皇誕生日 325 | 1983/5/3,憲法記念日 326 | 1983/5/5,こどもの日 327 | 1983/9/15,敬老の日 328 | 1983/9/23,秋分の日 329 | 1983/10/10,体育の日 330 | 1983/11/3,文化の日 331 | 1983/11/23,勤労感謝の日 332 | 1984/1/1,元日 333 | 1984/1/2,休日 334 | 1984/1/15,成人の日 335 | 1984/1/16,休日 336 | 1984/2/11,建国記念の日 337 | 1984/3/20,春分の日 338 | 1984/4/29,天皇誕生日 339 | 1984/4/30,休日 340 | 1984/5/3,憲法記念日 341 | 1984/5/5,こどもの日 342 | 1984/9/15,敬老の日 343 | 1984/9/23,秋分の日 344 | 1984/9/24,休日 345 | 1984/10/10,体育の日 346 | 1984/11/3,文化の日 347 | 1984/11/23,勤労感謝の日 348 | 1985/1/1,元日 349 | 1985/1/15,成人の日 350 | 1985/2/11,建国記念の日 351 | 1985/3/21,春分の日 352 | 1985/4/29,天皇誕生日 353 | 1985/5/3,憲法記念日 354 | 1985/5/5,こどもの日 355 | 1985/5/6,休日 356 | 1985/9/15,敬老の日 357 | 1985/9/16,休日 358 | 1985/9/23,秋分の日 359 | 1985/10/10,体育の日 360 | 1985/11/3,文化の日 361 | 1985/11/4,休日 362 | 1985/11/23,勤労感謝の日 363 | 1986/1/1,元日 364 | 1986/1/15,成人の日 365 | 1986/2/11,建国記念の日 366 | 1986/3/21,春分の日 367 | 1986/4/29,天皇誕生日 368 | 1986/5/3,憲法記念日 369 | 1986/5/5,こどもの日 370 | 1986/9/15,敬老の日 371 | 1986/9/23,秋分の日 372 | 1986/10/10,体育の日 373 | 1986/11/3,文化の日 374 | 1986/11/23,勤労感謝の日 375 | 1986/11/24,休日 376 | 1987/1/1,元日 377 | 1987/1/15,成人の日 378 | 1987/2/11,建国記念の日 379 | 1987/3/21,春分の日 380 | 1987/4/29,天皇誕生日 381 | 1987/5/3,憲法記念日 382 | 1987/5/4,休日 383 | 1987/5/5,こどもの日 384 | 1987/9/15,敬老の日 385 | 1987/9/23,秋分の日 386 | 1987/10/10,体育の日 387 | 1987/11/3,文化の日 388 | 1987/11/23,勤労感謝の日 389 | 1988/1/1,元日 390 | 1988/1/15,成人の日 391 | 1988/2/11,建国記念の日 392 | 1988/3/20,春分の日 393 | 1988/3/21,休日 394 | 1988/4/29,天皇誕生日 395 | 1988/5/3,憲法記念日 396 | 1988/5/4,休日 397 | 1988/5/5,こどもの日 398 | 1988/9/15,敬老の日 399 | 1988/9/23,秋分の日 400 | 1988/10/10,体育の日 401 | 1988/11/3,文化の日 402 | 1988/11/23,勤労感謝の日 403 | 1989/1/1,元日 404 | 1989/1/2,休日 405 | 1989/1/15,成人の日 406 | 1989/1/16,休日 407 | 1989/2/11,建国記念の日 408 | 1989/2/24,大喪の礼 409 | 1989/3/21,春分の日 410 | 1989/4/29,みどりの日 411 | 1989/5/3,憲法記念日 412 | 1989/5/4,休日 413 | 1989/5/5,こどもの日 414 | 1989/9/15,敬老の日 415 | 1989/9/23,秋分の日 416 | 1989/10/10,体育の日 417 | 1989/11/3,文化の日 418 | 1989/11/23,勤労感謝の日 419 | 1989/12/23,天皇誕生日 420 | 1990/1/1,元日 421 | 1990/1/15,成人の日 422 | 1990/2/11,建国記念の日 423 | 1990/2/12,休日 424 | 1990/3/21,春分の日 425 | 1990/4/29,みどりの日 426 | 1990/4/30,休日 427 | 1990/5/3,憲法記念日 428 | 1990/5/4,休日 429 | 1990/5/5,こどもの日 430 | 1990/9/15,敬老の日 431 | 1990/9/23,秋分の日 432 | 1990/9/24,休日 433 | 1990/10/10,体育の日 434 | 1990/11/3,文化の日 435 | 1990/11/12,即位礼正殿の儀 436 | 1990/11/23,勤労感謝の日 437 | 1990/12/23,天皇誕生日 438 | 1990/12/24,休日 439 | 1991/1/1,元日 440 | 1991/1/15,成人の日 441 | 1991/2/11,建国記念の日 442 | 1991/3/21,春分の日 443 | 1991/4/29,みどりの日 444 | 1991/5/3,憲法記念日 445 | 1991/5/4,休日 446 | 1991/5/5,こどもの日 447 | 1991/5/6,休日 448 | 1991/9/15,敬老の日 449 | 1991/9/16,休日 450 | 1991/9/23,秋分の日 451 | 1991/10/10,体育の日 452 | 1991/11/3,文化の日 453 | 1991/11/4,休日 454 | 1991/11/23,勤労感謝の日 455 | 1991/12/23,天皇誕生日 456 | 1992/1/1,元日 457 | 1992/1/15,成人の日 458 | 1992/2/11,建国記念の日 459 | 1992/3/20,春分の日 460 | 1992/4/29,みどりの日 461 | 1992/5/3,憲法記念日 462 | 1992/5/4,休日 463 | 1992/5/5,こどもの日 464 | 1992/9/15,敬老の日 465 | 1992/9/23,秋分の日 466 | 1992/10/10,体育の日 467 | 1992/11/3,文化の日 468 | 1992/11/23,勤労感謝の日 469 | 1992/12/23,天皇誕生日 470 | 1993/1/1,元日 471 | 1993/1/15,成人の日 472 | 1993/2/11,建国記念の日 473 | 1993/3/20,春分の日 474 | 1993/4/29,みどりの日 475 | 1993/5/3,憲法記念日 476 | 1993/5/4,休日 477 | 1993/5/5,こどもの日 478 | 1993/6/9,結婚の儀 479 | 1993/9/15,敬老の日 480 | 1993/9/23,秋分の日 481 | 1993/10/10,体育の日 482 | 1993/10/11,休日 483 | 1993/11/3,文化の日 484 | 1993/11/23,勤労感謝の日 485 | 1993/12/23,天皇誕生日 486 | 1994/1/1,元日 487 | 1994/1/15,成人の日 488 | 1994/2/11,建国記念の日 489 | 1994/3/21,春分の日 490 | 1994/4/29,みどりの日 491 | 1994/5/3,憲法記念日 492 | 1994/5/4,休日 493 | 1994/5/5,こどもの日 494 | 1994/9/15,敬老の日 495 | 1994/9/23,秋分の日 496 | 1994/10/10,体育の日 497 | 1994/11/3,文化の日 498 | 1994/11/23,勤労感謝の日 499 | 1994/12/23,天皇誕生日 500 | 1995/1/1,元日 501 | 1995/1/2,休日 502 | 1995/1/15,成人の日 503 | 1995/1/16,休日 504 | 1995/2/11,建国記念の日 505 | 1995/3/21,春分の日 506 | 1995/4/29,みどりの日 507 | 1995/5/3,憲法記念日 508 | 1995/5/4,休日 509 | 1995/5/5,こどもの日 510 | 1995/9/15,敬老の日 511 | 1995/9/23,秋分の日 512 | 1995/10/10,体育の日 513 | 1995/11/3,文化の日 514 | 1995/11/23,勤労感謝の日 515 | 1995/12/23,天皇誕生日 516 | 1996/1/1,元日 517 | 1996/1/15,成人の日 518 | 1996/2/11,建国記念の日 519 | 1996/2/12,休日 520 | 1996/3/20,春分の日 521 | 1996/4/29,みどりの日 522 | 1996/5/3,憲法記念日 523 | 1996/5/4,休日 524 | 1996/5/5,こどもの日 525 | 1996/5/6,休日 526 | 1996/7/20,海の日 527 | 1996/9/15,敬老の日 528 | 1996/9/16,休日 529 | 1996/9/23,秋分の日 530 | 1996/10/10,体育の日 531 | 1996/11/3,文化の日 532 | 1996/11/4,休日 533 | 1996/11/23,勤労感謝の日 534 | 1996/12/23,天皇誕生日 535 | 1997/1/1,元日 536 | 1997/1/15,成人の日 537 | 1997/2/11,建国記念の日 538 | 1997/3/20,春分の日 539 | 1997/4/29,みどりの日 540 | 1997/5/3,憲法記念日 541 | 1997/5/5,こどもの日 542 | 1997/7/20,海の日 543 | 1997/7/21,休日 544 | 1997/9/15,敬老の日 545 | 1997/9/23,秋分の日 546 | 1997/10/10,体育の日 547 | 1997/11/3,文化の日 548 | 1997/11/23,勤労感謝の日 549 | 1997/11/24,休日 550 | 1997/12/23,天皇誕生日 551 | 1998/1/1,元日 552 | 1998/1/15,成人の日 553 | 1998/2/11,建国記念の日 554 | 1998/3/21,春分の日 555 | 1998/4/29,みどりの日 556 | 1998/5/3,憲法記念日 557 | 1998/5/4,休日 558 | 1998/5/5,こどもの日 559 | 1998/7/20,海の日 560 | 1998/9/15,敬老の日 561 | 1998/9/23,秋分の日 562 | 1998/10/10,体育の日 563 | 1998/11/3,文化の日 564 | 1998/11/23,勤労感謝の日 565 | 1998/12/23,天皇誕生日 566 | 1999/1/1,元日 567 | 1999/1/15,成人の日 568 | 1999/2/11,建国記念の日 569 | 1999/3/21,春分の日 570 | 1999/3/22,休日 571 | 1999/4/29,みどりの日 572 | 1999/5/3,憲法記念日 573 | 1999/5/4,休日 574 | 1999/5/5,こどもの日 575 | 1999/7/20,海の日 576 | 1999/9/15,敬老の日 577 | 1999/9/23,秋分の日 578 | 1999/10/10,体育の日 579 | 1999/10/11,休日 580 | 1999/11/3,文化の日 581 | 1999/11/23,勤労感謝の日 582 | 1999/12/23,天皇誕生日 583 | 2000/1/1,元日 584 | 2000/1/10,成人の日 585 | 2000/2/11,建国記念の日 586 | 2000/3/20,春分の日 587 | 2000/4/29,みどりの日 588 | 2000/5/3,憲法記念日 589 | 2000/5/4,休日 590 | 2000/5/5,こどもの日 591 | 2000/7/20,海の日 592 | 2000/9/15,敬老の日 593 | 2000/9/23,秋分の日 594 | 2000/10/9,体育の日 595 | 2000/11/3,文化の日 596 | 2000/11/23,勤労感謝の日 597 | 2000/12/23,天皇誕生日 598 | 2001/1/1,元日 599 | 2001/1/8,成人の日 600 | 2001/2/11,建国記念の日 601 | 2001/2/12,休日 602 | 2001/3/20,春分の日 603 | 2001/4/29,みどりの日 604 | 2001/4/30,休日 605 | 2001/5/3,憲法記念日 606 | 2001/5/4,休日 607 | 2001/5/5,こどもの日 608 | 2001/7/20,海の日 609 | 2001/9/15,敬老の日 610 | 2001/9/23,秋分の日 611 | 2001/9/24,休日 612 | 2001/10/8,体育の日 613 | 2001/11/3,文化の日 614 | 2001/11/23,勤労感謝の日 615 | 2001/12/23,天皇誕生日 616 | 2001/12/24,休日 617 | 2002/1/1,元日 618 | 2002/1/14,成人の日 619 | 2002/2/11,建国記念の日 620 | 2002/3/21,春分の日 621 | 2002/4/29,みどりの日 622 | 2002/5/3,憲法記念日 623 | 2002/5/4,休日 624 | 2002/5/5,こどもの日 625 | 2002/5/6,休日 626 | 2002/7/20,海の日 627 | 2002/9/15,敬老の日 628 | 2002/9/16,休日 629 | 2002/9/23,秋分の日 630 | 2002/10/14,体育の日 631 | 2002/11/3,文化の日 632 | 2002/11/4,休日 633 | 2002/11/23,勤労感謝の日 634 | 2002/12/23,天皇誕生日 635 | 2003/1/1,元日 636 | 2003/1/13,成人の日 637 | 2003/2/11,建国記念の日 638 | 2003/3/21,春分の日 639 | 2003/4/29,みどりの日 640 | 2003/5/3,憲法記念日 641 | 2003/5/5,こどもの日 642 | 2003/7/21,海の日 643 | 2003/9/15,敬老の日 644 | 2003/9/23,秋分の日 645 | 2003/10/13,体育の日 646 | 2003/11/3,文化の日 647 | 2003/11/23,勤労感謝の日 648 | 2003/11/24,休日 649 | 2003/12/23,天皇誕生日 650 | 2004/1/1,元日 651 | 2004/1/12,成人の日 652 | 2004/2/11,建国記念の日 653 | 2004/3/20,春分の日 654 | 2004/4/29,みどりの日 655 | 2004/5/3,憲法記念日 656 | 2004/5/4,休日 657 | 2004/5/5,こどもの日 658 | 2004/7/19,海の日 659 | 2004/9/20,敬老の日 660 | 2004/9/23,秋分の日 661 | 2004/10/11,体育の日 662 | 2004/11/3,文化の日 663 | 2004/11/23,勤労感謝の日 664 | 2004/12/23,天皇誕生日 665 | 2005/1/1,元日 666 | 2005/1/10,成人の日 667 | 2005/2/11,建国記念の日 668 | 2005/3/20,春分の日 669 | 2005/3/21,休日 670 | 2005/4/29,みどりの日 671 | 2005/5/3,憲法記念日 672 | 2005/5/4,休日 673 | 2005/5/5,こどもの日 674 | 2005/7/18,海の日 675 | 2005/9/19,敬老の日 676 | 2005/9/23,秋分の日 677 | 2005/10/10,体育の日 678 | 2005/11/3,文化の日 679 | 2005/11/23,勤労感謝の日 680 | 2005/12/23,天皇誕生日 681 | 2006/1/1,元日 682 | 2006/1/2,休日 683 | 2006/1/9,成人の日 684 | 2006/2/11,建国記念の日 685 | 2006/3/21,春分の日 686 | 2006/4/29,みどりの日 687 | 2006/5/3,憲法記念日 688 | 2006/5/4,休日 689 | 2006/5/5,こどもの日 690 | 2006/7/17,海の日 691 | 2006/9/18,敬老の日 692 | 2006/9/23,秋分の日 693 | 2006/10/9,体育の日 694 | 2006/11/3,文化の日 695 | 2006/11/23,勤労感謝の日 696 | 2006/12/23,天皇誕生日 697 | 2007/1/1,元日 698 | 2007/1/8,成人の日 699 | 2007/2/11,建国記念の日 700 | 2007/2/12,休日 701 | 2007/3/21,春分の日 702 | 2007/4/29,昭和の日 703 | 2007/4/30,休日 704 | 2007/5/3,憲法記念日 705 | 2007/5/4,みどりの日 706 | 2007/5/5,こどもの日 707 | 2007/7/16,海の日 708 | 2007/9/17,敬老の日 709 | 2007/9/23,秋分の日 710 | 2007/9/24,休日 711 | 2007/10/8,体育の日 712 | 2007/11/3,文化の日 713 | 2007/11/23,勤労感謝の日 714 | 2007/12/23,天皇誕生日 715 | 2007/12/24,休日 716 | 2008/1/1,元日 717 | 2008/1/14,成人の日 718 | 2008/2/11,建国記念の日 719 | 2008/3/20,春分の日 720 | 2008/4/29,昭和の日 721 | 2008/5/3,憲法記念日 722 | 2008/5/4,みどりの日 723 | 2008/5/5,こどもの日 724 | 2008/5/6,休日 725 | 2008/7/21,海の日 726 | 2008/9/15,敬老の日 727 | 2008/9/23,秋分の日 728 | 2008/10/13,体育の日 729 | 2008/11/3,文化の日 730 | 2008/11/23,勤労感謝の日 731 | 2008/11/24,休日 732 | 2008/12/23,天皇誕生日 733 | 2009/1/1,元日 734 | 2009/1/12,成人の日 735 | 2009/2/11,建国記念の日 736 | 2009/3/20,春分の日 737 | 2009/4/29,昭和の日 738 | 2009/5/3,憲法記念日 739 | 2009/5/4,みどりの日 740 | 2009/5/5,こどもの日 741 | 2009/5/6,休日 742 | 2009/7/20,海の日 743 | 2009/9/21,敬老の日 744 | 2009/9/22,休日 745 | 2009/9/23,秋分の日 746 | 2009/10/12,体育の日 747 | 2009/11/3,文化の日 748 | 2009/11/23,勤労感謝の日 749 | 2009/12/23,天皇誕生日 750 | 2010/1/1,元日 751 | 2010/1/11,成人の日 752 | 2010/2/11,建国記念の日 753 | 2010/3/21,春分の日 754 | 2010/3/22,休日 755 | 2010/4/29,昭和の日 756 | 2010/5/3,憲法記念日 757 | 2010/5/4,みどりの日 758 | 2010/5/5,こどもの日 759 | 2010/7/19,海の日 760 | 2010/9/20,敬老の日 761 | 2010/9/23,秋分の日 762 | 2010/10/11,体育の日 763 | 2010/11/3,文化の日 764 | 2010/11/23,勤労感謝の日 765 | 2010/12/23,天皇誕生日 766 | 2011/1/1,元日 767 | 2011/1/10,成人の日 768 | 2011/2/11,建国記念の日 769 | 2011/3/21,春分の日 770 | 2011/4/29,昭和の日 771 | 2011/5/3,憲法記念日 772 | 2011/5/4,みどりの日 773 | 2011/5/5,こどもの日 774 | 2011/7/18,海の日 775 | 2011/9/19,敬老の日 776 | 2011/9/23,秋分の日 777 | 2011/10/10,体育の日 778 | 2011/11/3,文化の日 779 | 2011/11/23,勤労感謝の日 780 | 2011/12/23,天皇誕生日 781 | 2012/1/1,元日 782 | 2012/1/2,休日 783 | 2012/1/9,成人の日 784 | 2012/2/11,建国記念の日 785 | 2012/3/20,春分の日 786 | 2012/4/29,昭和の日 787 | 2012/4/30,休日 788 | 2012/5/3,憲法記念日 789 | 2012/5/4,みどりの日 790 | 2012/5/5,こどもの日 791 | 2012/7/16,海の日 792 | 2012/9/17,敬老の日 793 | 2012/9/22,秋分の日 794 | 2012/10/8,体育の日 795 | 2012/11/3,文化の日 796 | 2012/11/23,勤労感謝の日 797 | 2012/12/23,天皇誕生日 798 | 2012/12/24,休日 799 | 2013/1/1,元日 800 | 2013/1/14,成人の日 801 | 2013/2/11,建国記念の日 802 | 2013/3/20,春分の日 803 | 2013/4/29,昭和の日 804 | 2013/5/3,憲法記念日 805 | 2013/5/4,みどりの日 806 | 2013/5/5,こどもの日 807 | 2013/5/6,休日 808 | 2013/7/15,海の日 809 | 2013/9/16,敬老の日 810 | 2013/9/23,秋分の日 811 | 2013/10/14,体育の日 812 | 2013/11/3,文化の日 813 | 2013/11/4,休日 814 | 2013/11/23,勤労感謝の日 815 | 2013/12/23,天皇誕生日 816 | 2014/1/1,元日 817 | 2014/1/13,成人の日 818 | 2014/2/11,建国記念の日 819 | 2014/3/21,春分の日 820 | 2014/4/29,昭和の日 821 | 2014/5/3,憲法記念日 822 | 2014/5/4,みどりの日 823 | 2014/5/5,こどもの日 824 | 2014/5/6,休日 825 | 2014/7/21,海の日 826 | 2014/9/15,敬老の日 827 | 2014/9/23,秋分の日 828 | 2014/10/13,体育の日 829 | 2014/11/3,文化の日 830 | 2014/11/23,勤労感謝の日 831 | 2014/11/24,休日 832 | 2014/12/23,天皇誕生日 833 | 2015/1/1,元日 834 | 2015/1/12,成人の日 835 | 2015/2/11,建国記念の日 836 | 2015/3/21,春分の日 837 | 2015/4/29,昭和の日 838 | 2015/5/3,憲法記念日 839 | 2015/5/4,みどりの日 840 | 2015/5/5,こどもの日 841 | 2015/5/6,休日 842 | 2015/7/20,海の日 843 | 2015/9/21,敬老の日 844 | 2015/9/22,休日 845 | 2015/9/23,秋分の日 846 | 2015/10/12,体育の日 847 | 2015/11/3,文化の日 848 | 2015/11/23,勤労感謝の日 849 | 2015/12/23,天皇誕生日 850 | 2016/1/1,元日 851 | 2016/1/11,成人の日 852 | 2016/2/11,建国記念の日 853 | 2016/3/20,春分の日 854 | 2016/3/21,休日 855 | 2016/4/29,昭和の日 856 | 2016/5/3,憲法記念日 857 | 2016/5/4,みどりの日 858 | 2016/5/5,こどもの日 859 | 2016/7/18,海の日 860 | 2016/8/11,山の日 861 | 2016/9/19,敬老の日 862 | 2016/9/22,秋分の日 863 | 2016/10/10,体育の日 864 | 2016/11/3,文化の日 865 | 2016/11/23,勤労感謝の日 866 | 2016/12/23,天皇誕生日 867 | 2017/1/1,元日 868 | 2017/1/2,休日 869 | 2017/1/9,成人の日 870 | 2017/2/11,建国記念の日 871 | 2017/3/20,春分の日 872 | 2017/4/29,昭和の日 873 | 2017/5/3,憲法記念日 874 | 2017/5/4,みどりの日 875 | 2017/5/5,こどもの日 876 | 2017/7/17,海の日 877 | 2017/8/11,山の日 878 | 2017/9/18,敬老の日 879 | 2017/9/23,秋分の日 880 | 2017/10/9,体育の日 881 | 2017/11/3,文化の日 882 | 2017/11/23,勤労感謝の日 883 | 2017/12/23,天皇誕生日 884 | 2018/1/1,元日 885 | 2018/1/8,成人の日 886 | 2018/2/11,建国記念の日 887 | 2018/2/12,休日 888 | 2018/3/21,春分の日 889 | 2018/4/29,昭和の日 890 | 2018/4/30,休日 891 | 2018/5/3,憲法記念日 892 | 2018/5/4,みどりの日 893 | 2018/5/5,こどもの日 894 | 2018/7/16,海の日 895 | 2018/8/11,山の日 896 | 2018/9/17,敬老の日 897 | 2018/9/23,秋分の日 898 | 2018/9/24,休日 899 | 2018/10/8,体育の日 900 | 2018/11/3,文化の日 901 | 2018/11/23,勤労感謝の日 902 | 2018/12/23,天皇誕生日 903 | 2018/12/24,休日 904 | 2019/1/1,元日 905 | 2019/1/14,成人の日 906 | 2019/2/11,建国記念の日 907 | 2019/3/21,春分の日 908 | 2019/4/29,昭和の日 909 | 2019/4/30,休日 910 | 2019/5/1,休日(祝日扱い) 911 | 2019/5/2,休日 912 | 2019/5/3,憲法記念日 913 | 2019/5/4,みどりの日 914 | 2019/5/5,こどもの日 915 | 2019/5/6,休日 916 | 2019/7/15,海の日 917 | 2019/8/11,山の日 918 | 2019/8/12,休日 919 | 2019/9/16,敬老の日 920 | 2019/9/23,秋分の日 921 | 2019/10/14,体育の日(スポーツの日) 922 | 2019/10/22,休日(祝日扱い) 923 | 2019/11/3,文化の日 924 | 2019/11/4,休日 925 | 2019/11/23,勤労感謝の日 926 | 2020/1/1,元日 927 | 2020/1/13,成人の日 928 | 2020/2/11,建国記念の日 929 | 2020/2/23,天皇誕生日 930 | 2020/2/24,休日 931 | 2020/3/20,春分の日 932 | 2020/4/29,昭和の日 933 | 2020/5/3,憲法記念日 934 | 2020/5/4,みどりの日 935 | 2020/5/5,こどもの日 936 | 2020/5/6,休日 937 | 2020/7/23,海の日 938 | 2020/7/24,スポーツの日 939 | 2020/8/10,山の日 940 | 2020/9/21,敬老の日 941 | 2020/9/22,秋分の日 942 | 2020/11/3,文化の日 943 | 2020/11/23,勤労感謝の日 944 | 2021/1/1,元日 945 | 2021/1/11,成人の日 946 | 2021/2/11,建国記念の日 947 | 2021/2/23,天皇誕生日 948 | 2021/3/20,春分の日 949 | 2021/4/29,昭和の日 950 | 2021/5/3,憲法記念日 951 | 2021/5/4,みどりの日 952 | 2021/5/5,こどもの日 953 | 2021/7/22,海の日 954 | 2021/7/23,スポーツの日 955 | 2021/8/8,山の日 956 | 2021/8/9,休日 957 | 2021/9/20,敬老の日 958 | 2021/9/23,秋分の日 959 | 2021/11/3,文化の日 960 | 2021/11/23,勤労感謝の日 961 | 2022/1/1,元日 962 | 2022/1/10,成人の日 963 | 2022/2/11,建国記念の日 964 | 2022/2/23,天皇誕生日 965 | 2022/3/21,春分の日 966 | 2022/4/29,昭和の日 967 | 2022/5/3,憲法記念日 968 | 2022/5/4,みどりの日 969 | 2022/5/5,こどもの日 970 | 2022/7/18,海の日 971 | 2022/8/11,山の日 972 | 2022/9/19,敬老の日 973 | 2022/9/23,秋分の日 974 | 2022/10/10,スポーツの日 975 | 2022/11/3,文化の日 976 | 2022/11/23,勤労感謝の日 977 | 2023/1/1,元日 978 | 2023/1/2,休日 979 | 2023/1/9,成人の日 980 | 2023/2/11,建国記念の日 981 | 2023/2/23,天皇誕生日 982 | 2023/3/21,春分の日 983 | 2023/4/29,昭和の日 984 | 2023/5/3,憲法記念日 985 | 2023/5/4,みどりの日 986 | 2023/5/5,こどもの日 987 | 2023/7/17,海の日 988 | 2023/8/11,山の日 989 | 2023/9/18,敬老の日 990 | 2023/9/23,秋分の日 991 | 2023/10/9,スポーツの日 992 | 2023/11/3,文化の日 993 | 2023/11/23,勤労感謝の日 994 | 2024/1/1,元日 995 | 2024/1/8,成人の日 996 | 2024/2/11,建国記念の日 997 | 2024/2/12,休日 998 | 2024/2/23,天皇誕生日 999 | 2024/3/20,春分の日 1000 | 2024/4/29,昭和の日 1001 | 2024/5/3,憲法記念日 1002 | 2024/5/4,みどりの日 1003 | 2024/5/5,こどもの日 1004 | 2024/5/6,休日 1005 | 2024/7/15,海の日 1006 | 2024/8/11,山の日 1007 | 2024/8/12,休日 1008 | 2024/9/16,敬老の日 1009 | 2024/9/22,秋分の日 1010 | 2024/9/23,休日 1011 | 2024/10/14,スポーツの日 1012 | 2024/11/3,文化の日 1013 | 2024/11/4,休日 1014 | 2024/11/23,勤労感謝の日 1015 | 2025/1/1,元日 1016 | 2025/1/13,成人の日 1017 | 2025/2/11,建国記念の日 1018 | 2025/2/23,天皇誕生日 1019 | 2025/2/24,休日 1020 | 2025/3/20,春分の日 1021 | 2025/4/29,昭和の日 1022 | 2025/5/3,憲法記念日 1023 | 2025/5/4,みどりの日 1024 | 2025/5/5,こどもの日 1025 | 2025/5/6,休日 1026 | 2025/7/21,海の日 1027 | 2025/8/11,山の日 1028 | 2025/9/15,敬老の日 1029 | 2025/9/23,秋分の日 1030 | 2025/10/13,スポーツの日 1031 | 2025/11/3,文化の日 1032 | 2025/11/23,勤労感謝の日 1033 | 2025/11/24,休日 1034 | 2026/1/1,元日 1035 | 2026/1/12,成人の日 1036 | 2026/2/11,建国記念の日 1037 | 2026/2/23,天皇誕生日 1038 | 2026/3/20,春分の日 1039 | 2026/4/29,昭和の日 1040 | 2026/5/3,憲法記念日 1041 | 2026/5/4,みどりの日 1042 | 2026/5/5,こどもの日 1043 | 2026/5/6,休日 1044 | 2026/7/20,海の日 1045 | 2026/8/11,山の日 1046 | 2026/9/21,敬老の日 1047 | 2026/9/22,休日 1048 | 2026/9/23,秋分の日 1049 | 2026/10/12,スポーツの日 1050 | 2026/11/3,文化の日 1051 | 2026/11/23,勤労感謝の日 -------------------------------------------------------------------------------- /nholidays/jp/schedule.go: -------------------------------------------------------------------------------- 1 | // Code generated by jp_generator.go; DO NOT EDIT. 2 | // Based on holiday from https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv. 3 | 4 | package jp 5 | 6 | import ( 7 | "time" 8 | 9 | "github.com/yut-kt/goholiday/nholidays" 10 | ) 11 | 12 | func New() *nholidays.ScheduleImpl { 13 | return nholidays.New( 14 | map[time.Weekday]struct{}{ 15 | time.Saturday: {}, 16 | time.Sunday: {}, 17 | }, 18 | map[string]string{ 19 | "2000-01-01": "元日", 20 | "2000-01-10": "成人の日", 21 | "2000-02-11": "建国記念の日", 22 | "2000-03-20": "春分の日", 23 | "2000-04-29": "みどりの日", 24 | "2000-05-03": "憲法記念日", 25 | "2000-05-04": "休日", 26 | "2000-05-05": "こどもの日", 27 | "2000-07-20": "海の日", 28 | "2000-09-15": "敬老の日", 29 | "2000-09-23": "秋分の日", 30 | "2000-10-09": "体育の日", 31 | "2000-11-03": "文化の日", 32 | "2000-11-23": "勤労感謝の日", 33 | "2000-12-23": "天皇誕生日", 34 | "2001-01-01": "元日", 35 | "2001-01-08": "成人の日", 36 | "2001-02-11": "建国記念の日", 37 | "2001-02-12": "休日", 38 | "2001-03-20": "春分の日", 39 | "2001-04-29": "みどりの日", 40 | "2001-04-30": "休日", 41 | "2001-05-03": "憲法記念日", 42 | "2001-05-04": "休日", 43 | "2001-05-05": "こどもの日", 44 | "2001-07-20": "海の日", 45 | "2001-09-15": "敬老の日", 46 | "2001-09-23": "秋分の日", 47 | "2001-09-24": "休日", 48 | "2001-10-08": "体育の日", 49 | "2001-11-03": "文化の日", 50 | "2001-11-23": "勤労感謝の日", 51 | "2001-12-23": "天皇誕生日", 52 | "2001-12-24": "休日", 53 | "2002-01-01": "元日", 54 | "2002-01-14": "成人の日", 55 | "2002-02-11": "建国記念の日", 56 | "2002-03-21": "春分の日", 57 | "2002-04-29": "みどりの日", 58 | "2002-05-03": "憲法記念日", 59 | "2002-05-04": "休日", 60 | "2002-05-05": "こどもの日", 61 | "2002-05-06": "休日", 62 | "2002-07-20": "海の日", 63 | "2002-09-15": "敬老の日", 64 | "2002-09-16": "休日", 65 | "2002-09-23": "秋分の日", 66 | "2002-10-14": "体育の日", 67 | "2002-11-03": "文化の日", 68 | "2002-11-04": "休日", 69 | "2002-11-23": "勤労感謝の日", 70 | "2002-12-23": "天皇誕生日", 71 | "2003-01-01": "元日", 72 | "2003-01-13": "成人の日", 73 | "2003-02-11": "建国記念の日", 74 | "2003-03-21": "春分の日", 75 | "2003-04-29": "みどりの日", 76 | "2003-05-03": "憲法記念日", 77 | "2003-05-05": "こどもの日", 78 | "2003-07-21": "海の日", 79 | "2003-09-15": "敬老の日", 80 | "2003-09-23": "秋分の日", 81 | "2003-10-13": "体育の日", 82 | "2003-11-03": "文化の日", 83 | "2003-11-23": "勤労感謝の日", 84 | "2003-11-24": "休日", 85 | "2003-12-23": "天皇誕生日", 86 | "2004-01-01": "元日", 87 | "2004-01-12": "成人の日", 88 | "2004-02-11": "建国記念の日", 89 | "2004-03-20": "春分の日", 90 | "2004-04-29": "みどりの日", 91 | "2004-05-03": "憲法記念日", 92 | "2004-05-04": "休日", 93 | "2004-05-05": "こどもの日", 94 | "2004-07-19": "海の日", 95 | "2004-09-20": "敬老の日", 96 | "2004-09-23": "秋分の日", 97 | "2004-10-11": "体育の日", 98 | "2004-11-03": "文化の日", 99 | "2004-11-23": "勤労感謝の日", 100 | "2004-12-23": "天皇誕生日", 101 | "2005-01-01": "元日", 102 | "2005-01-10": "成人の日", 103 | "2005-02-11": "建国記念の日", 104 | "2005-03-20": "春分の日", 105 | "2005-03-21": "休日", 106 | "2005-04-29": "みどりの日", 107 | "2005-05-03": "憲法記念日", 108 | "2005-05-04": "休日", 109 | "2005-05-05": "こどもの日", 110 | "2005-07-18": "海の日", 111 | "2005-09-19": "敬老の日", 112 | "2005-09-23": "秋分の日", 113 | "2005-10-10": "体育の日", 114 | "2005-11-03": "文化の日", 115 | "2005-11-23": "勤労感謝の日", 116 | "2005-12-23": "天皇誕生日", 117 | "2006-01-01": "元日", 118 | "2006-01-02": "休日", 119 | "2006-01-09": "成人の日", 120 | "2006-02-11": "建国記念の日", 121 | "2006-03-21": "春分の日", 122 | "2006-04-29": "みどりの日", 123 | "2006-05-03": "憲法記念日", 124 | "2006-05-04": "休日", 125 | "2006-05-05": "こどもの日", 126 | "2006-07-17": "海の日", 127 | "2006-09-18": "敬老の日", 128 | "2006-09-23": "秋分の日", 129 | "2006-10-09": "体育の日", 130 | "2006-11-03": "文化の日", 131 | "2006-11-23": "勤労感謝の日", 132 | "2006-12-23": "天皇誕生日", 133 | "2007-01-01": "元日", 134 | "2007-01-08": "成人の日", 135 | "2007-02-11": "建国記念の日", 136 | "2007-02-12": "休日", 137 | "2007-03-21": "春分の日", 138 | "2007-04-29": "昭和の日", 139 | "2007-04-30": "休日", 140 | "2007-05-03": "憲法記念日", 141 | "2007-05-04": "みどりの日", 142 | "2007-05-05": "こどもの日", 143 | "2007-07-16": "海の日", 144 | "2007-09-17": "敬老の日", 145 | "2007-09-23": "秋分の日", 146 | "2007-09-24": "休日", 147 | "2007-10-08": "体育の日", 148 | "2007-11-03": "文化の日", 149 | "2007-11-23": "勤労感謝の日", 150 | "2007-12-23": "天皇誕生日", 151 | "2007-12-24": "休日", 152 | "2008-01-01": "元日", 153 | "2008-01-14": "成人の日", 154 | "2008-02-11": "建国記念の日", 155 | "2008-03-20": "春分の日", 156 | "2008-04-29": "昭和の日", 157 | "2008-05-03": "憲法記念日", 158 | "2008-05-04": "みどりの日", 159 | "2008-05-05": "こどもの日", 160 | "2008-05-06": "休日", 161 | "2008-07-21": "海の日", 162 | "2008-09-15": "敬老の日", 163 | "2008-09-23": "秋分の日", 164 | "2008-10-13": "体育の日", 165 | "2008-11-03": "文化の日", 166 | "2008-11-23": "勤労感謝の日", 167 | "2008-11-24": "休日", 168 | "2008-12-23": "天皇誕生日", 169 | "2009-01-01": "元日", 170 | "2009-01-12": "成人の日", 171 | "2009-02-11": "建国記念の日", 172 | "2009-03-20": "春分の日", 173 | "2009-04-29": "昭和の日", 174 | "2009-05-03": "憲法記念日", 175 | "2009-05-04": "みどりの日", 176 | "2009-05-05": "こどもの日", 177 | "2009-05-06": "休日", 178 | "2009-07-20": "海の日", 179 | "2009-09-21": "敬老の日", 180 | "2009-09-22": "休日", 181 | "2009-09-23": "秋分の日", 182 | "2009-10-12": "体育の日", 183 | "2009-11-03": "文化の日", 184 | "2009-11-23": "勤労感謝の日", 185 | "2009-12-23": "天皇誕生日", 186 | "2010-01-01": "元日", 187 | "2010-01-11": "成人の日", 188 | "2010-02-11": "建国記念の日", 189 | "2010-03-21": "春分の日", 190 | "2010-03-22": "休日", 191 | "2010-04-29": "昭和の日", 192 | "2010-05-03": "憲法記念日", 193 | "2010-05-04": "みどりの日", 194 | "2010-05-05": "こどもの日", 195 | "2010-07-19": "海の日", 196 | "2010-09-20": "敬老の日", 197 | "2010-09-23": "秋分の日", 198 | "2010-10-11": "体育の日", 199 | "2010-11-03": "文化の日", 200 | "2010-11-23": "勤労感謝の日", 201 | "2010-12-23": "天皇誕生日", 202 | "2011-01-01": "元日", 203 | "2011-01-10": "成人の日", 204 | "2011-02-11": "建国記念の日", 205 | "2011-03-21": "春分の日", 206 | "2011-04-29": "昭和の日", 207 | "2011-05-03": "憲法記念日", 208 | "2011-05-04": "みどりの日", 209 | "2011-05-05": "こどもの日", 210 | "2011-07-18": "海の日", 211 | "2011-09-19": "敬老の日", 212 | "2011-09-23": "秋分の日", 213 | "2011-10-10": "体育の日", 214 | "2011-11-03": "文化の日", 215 | "2011-11-23": "勤労感謝の日", 216 | "2011-12-23": "天皇誕生日", 217 | "2012-01-01": "元日", 218 | "2012-01-02": "休日", 219 | "2012-01-09": "成人の日", 220 | "2012-02-11": "建国記念の日", 221 | "2012-03-20": "春分の日", 222 | "2012-04-29": "昭和の日", 223 | "2012-04-30": "休日", 224 | "2012-05-03": "憲法記念日", 225 | "2012-05-04": "みどりの日", 226 | "2012-05-05": "こどもの日", 227 | "2012-07-16": "海の日", 228 | "2012-09-17": "敬老の日", 229 | "2012-09-22": "秋分の日", 230 | "2012-10-08": "体育の日", 231 | "2012-11-03": "文化の日", 232 | "2012-11-23": "勤労感謝の日", 233 | "2012-12-23": "天皇誕生日", 234 | "2012-12-24": "休日", 235 | "2013-01-01": "元日", 236 | "2013-01-14": "成人の日", 237 | "2013-02-11": "建国記念の日", 238 | "2013-03-20": "春分の日", 239 | "2013-04-29": "昭和の日", 240 | "2013-05-03": "憲法記念日", 241 | "2013-05-04": "みどりの日", 242 | "2013-05-05": "こどもの日", 243 | "2013-05-06": "休日", 244 | "2013-07-15": "海の日", 245 | "2013-09-16": "敬老の日", 246 | "2013-09-23": "秋分の日", 247 | "2013-10-14": "体育の日", 248 | "2013-11-03": "文化の日", 249 | "2013-11-04": "休日", 250 | "2013-11-23": "勤労感謝の日", 251 | "2013-12-23": "天皇誕生日", 252 | "2014-01-01": "元日", 253 | "2014-01-13": "成人の日", 254 | "2014-02-11": "建国記念の日", 255 | "2014-03-21": "春分の日", 256 | "2014-04-29": "昭和の日", 257 | "2014-05-03": "憲法記念日", 258 | "2014-05-04": "みどりの日", 259 | "2014-05-05": "こどもの日", 260 | "2014-05-06": "休日", 261 | "2014-07-21": "海の日", 262 | "2014-09-15": "敬老の日", 263 | "2014-09-23": "秋分の日", 264 | "2014-10-13": "体育の日", 265 | "2014-11-03": "文化の日", 266 | "2014-11-23": "勤労感謝の日", 267 | "2014-11-24": "休日", 268 | "2014-12-23": "天皇誕生日", 269 | "2015-01-01": "元日", 270 | "2015-01-12": "成人の日", 271 | "2015-02-11": "建国記念の日", 272 | "2015-03-21": "春分の日", 273 | "2015-04-29": "昭和の日", 274 | "2015-05-03": "憲法記念日", 275 | "2015-05-04": "みどりの日", 276 | "2015-05-05": "こどもの日", 277 | "2015-05-06": "休日", 278 | "2015-07-20": "海の日", 279 | "2015-09-21": "敬老の日", 280 | "2015-09-22": "休日", 281 | "2015-09-23": "秋分の日", 282 | "2015-10-12": "体育の日", 283 | "2015-11-03": "文化の日", 284 | "2015-11-23": "勤労感謝の日", 285 | "2015-12-23": "天皇誕生日", 286 | "2016-01-01": "元日", 287 | "2016-01-11": "成人の日", 288 | "2016-02-11": "建国記念の日", 289 | "2016-03-20": "春分の日", 290 | "2016-03-21": "休日", 291 | "2016-04-29": "昭和の日", 292 | "2016-05-03": "憲法記念日", 293 | "2016-05-04": "みどりの日", 294 | "2016-05-05": "こどもの日", 295 | "2016-07-18": "海の日", 296 | "2016-08-11": "山の日", 297 | "2016-09-19": "敬老の日", 298 | "2016-09-22": "秋分の日", 299 | "2016-10-10": "体育の日", 300 | "2016-11-03": "文化の日", 301 | "2016-11-23": "勤労感謝の日", 302 | "2016-12-23": "天皇誕生日", 303 | "2017-01-01": "元日", 304 | "2017-01-02": "休日", 305 | "2017-01-09": "成人の日", 306 | "2017-02-11": "建国記念の日", 307 | "2017-03-20": "春分の日", 308 | "2017-04-29": "昭和の日", 309 | "2017-05-03": "憲法記念日", 310 | "2017-05-04": "みどりの日", 311 | "2017-05-05": "こどもの日", 312 | "2017-07-17": "海の日", 313 | "2017-08-11": "山の日", 314 | "2017-09-18": "敬老の日", 315 | "2017-09-23": "秋分の日", 316 | "2017-10-09": "体育の日", 317 | "2017-11-03": "文化の日", 318 | "2017-11-23": "勤労感謝の日", 319 | "2017-12-23": "天皇誕生日", 320 | "2018-01-01": "元日", 321 | "2018-01-08": "成人の日", 322 | "2018-02-11": "建国記念の日", 323 | "2018-02-12": "休日", 324 | "2018-03-21": "春分の日", 325 | "2018-04-29": "昭和の日", 326 | "2018-04-30": "休日", 327 | "2018-05-03": "憲法記念日", 328 | "2018-05-04": "みどりの日", 329 | "2018-05-05": "こどもの日", 330 | "2018-07-16": "海の日", 331 | "2018-08-11": "山の日", 332 | "2018-09-17": "敬老の日", 333 | "2018-09-23": "秋分の日", 334 | "2018-09-24": "休日", 335 | "2018-10-08": "体育の日", 336 | "2018-11-03": "文化の日", 337 | "2018-11-23": "勤労感謝の日", 338 | "2018-12-23": "天皇誕生日", 339 | "2018-12-24": "休日", 340 | "2019-01-01": "元日", 341 | "2019-01-14": "成人の日", 342 | "2019-02-11": "建国記念の日", 343 | "2019-03-21": "春分の日", 344 | "2019-04-29": "昭和の日", 345 | "2019-04-30": "休日", 346 | "2019-05-01": "休日(祝日扱い)", 347 | "2019-05-02": "休日", 348 | "2019-05-03": "憲法記念日", 349 | "2019-05-04": "みどりの日", 350 | "2019-05-05": "こどもの日", 351 | "2019-05-06": "休日", 352 | "2019-07-15": "海の日", 353 | "2019-08-11": "山の日", 354 | "2019-08-12": "休日", 355 | "2019-09-16": "敬老の日", 356 | "2019-09-23": "秋分の日", 357 | "2019-10-14": "体育の日(スポーツの日)", 358 | "2019-10-22": "休日(祝日扱い)", 359 | "2019-11-03": "文化の日", 360 | "2019-11-04": "休日", 361 | "2019-11-23": "勤労感謝の日", 362 | "2020-01-01": "元日", 363 | "2020-01-13": "成人の日", 364 | "2020-02-11": "建国記念の日", 365 | "2020-02-23": "天皇誕生日", 366 | "2020-02-24": "休日", 367 | "2020-03-20": "春分の日", 368 | "2020-04-29": "昭和の日", 369 | "2020-05-03": "憲法記念日", 370 | "2020-05-04": "みどりの日", 371 | "2020-05-05": "こどもの日", 372 | "2020-05-06": "休日", 373 | "2020-07-23": "海の日", 374 | "2020-07-24": "スポーツの日", 375 | "2020-08-10": "山の日", 376 | "2020-09-21": "敬老の日", 377 | "2020-09-22": "秋分の日", 378 | "2020-11-03": "文化の日", 379 | "2020-11-23": "勤労感謝の日", 380 | "2021-01-01": "元日", 381 | "2021-01-11": "成人の日", 382 | "2021-02-11": "建国記念の日", 383 | "2021-02-23": "天皇誕生日", 384 | "2021-03-20": "春分の日", 385 | "2021-04-29": "昭和の日", 386 | "2021-05-03": "憲法記念日", 387 | "2021-05-04": "みどりの日", 388 | "2021-05-05": "こどもの日", 389 | "2021-07-22": "海の日", 390 | "2021-07-23": "スポーツの日", 391 | "2021-08-08": "山の日", 392 | "2021-08-09": "休日", 393 | "2021-09-20": "敬老の日", 394 | "2021-09-23": "秋分の日", 395 | "2021-11-03": "文化の日", 396 | "2021-11-23": "勤労感謝の日", 397 | "2022-01-01": "元日", 398 | "2022-01-10": "成人の日", 399 | "2022-02-11": "建国記念の日", 400 | "2022-02-23": "天皇誕生日", 401 | "2022-03-21": "春分の日", 402 | "2022-04-29": "昭和の日", 403 | "2022-05-03": "憲法記念日", 404 | "2022-05-04": "みどりの日", 405 | "2022-05-05": "こどもの日", 406 | "2022-07-18": "海の日", 407 | "2022-08-11": "山の日", 408 | "2022-09-19": "敬老の日", 409 | "2022-09-23": "秋分の日", 410 | "2022-10-10": "スポーツの日", 411 | "2022-11-03": "文化の日", 412 | "2022-11-23": "勤労感謝の日", 413 | "2023-01-01": "元日", 414 | "2023-01-02": "休日", 415 | "2023-01-09": "成人の日", 416 | "2023-02-11": "建国記念の日", 417 | "2023-02-23": "天皇誕生日", 418 | "2023-03-21": "春分の日", 419 | "2023-04-29": "昭和の日", 420 | "2023-05-03": "憲法記念日", 421 | "2023-05-04": "みどりの日", 422 | "2023-05-05": "こどもの日", 423 | "2023-07-17": "海の日", 424 | "2023-08-11": "山の日", 425 | "2023-09-18": "敬老の日", 426 | "2023-09-23": "秋分の日", 427 | "2023-10-09": "スポーツの日", 428 | "2023-11-03": "文化の日", 429 | "2023-11-23": "勤労感謝の日", 430 | "2024-01-01": "元日", 431 | "2024-01-08": "成人の日", 432 | "2024-02-11": "建国記念の日", 433 | "2024-02-12": "休日", 434 | "2024-02-23": "天皇誕生日", 435 | "2024-03-20": "春分の日", 436 | "2024-04-29": "昭和の日", 437 | "2024-05-03": "憲法記念日", 438 | "2024-05-04": "みどりの日", 439 | "2024-05-05": "こどもの日", 440 | "2024-05-06": "休日", 441 | "2024-07-15": "海の日", 442 | "2024-08-11": "山の日", 443 | "2024-08-12": "休日", 444 | "2024-09-16": "敬老の日", 445 | "2024-09-22": "秋分の日", 446 | "2024-09-23": "休日", 447 | "2024-10-14": "スポーツの日", 448 | "2024-11-03": "文化の日", 449 | "2024-11-04": "休日", 450 | "2024-11-23": "勤労感謝の日", 451 | "2025-01-01": "元日", 452 | "2025-01-13": "成人の日", 453 | "2025-02-11": "建国記念の日", 454 | "2025-02-23": "天皇誕生日", 455 | "2025-02-24": "休日", 456 | "2025-03-20": "春分の日", 457 | "2025-04-29": "昭和の日", 458 | "2025-05-03": "憲法記念日", 459 | "2025-05-04": "みどりの日", 460 | "2025-05-05": "こどもの日", 461 | "2025-05-06": "休日", 462 | "2025-07-21": "海の日", 463 | "2025-08-11": "山の日", 464 | "2025-09-15": "敬老の日", 465 | "2025-09-23": "秋分の日", 466 | "2025-10-13": "スポーツの日", 467 | "2025-11-03": "文化の日", 468 | "2025-11-23": "勤労感謝の日", 469 | "2025-11-24": "休日", 470 | "2026-01-01": "元日", 471 | "2026-01-12": "成人の日", 472 | "2026-02-11": "建国記念の日", 473 | "2026-02-23": "天皇誕生日", 474 | "2026-03-20": "春分の日", 475 | "2026-04-29": "昭和の日", 476 | "2026-05-03": "憲法記念日", 477 | "2026-05-04": "みどりの日", 478 | "2026-05-05": "こどもの日", 479 | "2026-05-06": "休日", 480 | "2026-07-20": "海の日", 481 | "2026-08-11": "山の日", 482 | "2026-09-21": "敬老の日", 483 | "2026-09-22": "休日", 484 | "2026-09-23": "秋分の日", 485 | "2026-10-12": "スポーツの日", 486 | "2026-11-03": "文化の日", 487 | "2026-11-23": "勤労感謝の日", 488 | }, 489 | ) 490 | } 491 | -------------------------------------------------------------------------------- /nholidays/sg/schedule.go: -------------------------------------------------------------------------------- 1 | package sg 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/yut-kt/goholiday/nholidays" 7 | ) 8 | 9 | func New() *nholidays.ScheduleImpl { 10 | return nholidays.New( 11 | map[time.Weekday]struct{}{ 12 | time.Saturday: {}, 13 | time.Sunday: {}, 14 | }, 15 | map[string]string{ 16 | "2022-01-01": "New Year's Day", 17 | "2022-02-01": "Chinese New Year", 18 | "2022-02-02": "Chinese New Year Holiday", 19 | "2022-04-15": "Good Friday", 20 | "2022-05-02": "Labour Day (in lieu)", 21 | "2022-05-03": "Hari Raya Puasa", 22 | "2022-05-16": "Vesak Day (in lieu)", 23 | "2022-07-10": "Hari Raya Haji", 24 | "2022-07-11": "Hari Raya Haji (in lieu)", 25 | "2022-08-09": "National Day", 26 | "2022-10-24": "Deepavali", 27 | "2022-12-25": "Christmas Day", 28 | "2022-12-26": "Christmas Day (in lieu)", 29 | "2023-01-01": "New Year's Day", 30 | "2023-01-22": "Chinese New Year", 31 | "2023-01-23": "Chinese New Year", 32 | "2023-01-24": "Chinese New Year (in lieu)", 33 | "2023-04-07": "Good Friday", 34 | "2023-04-22": "Hari Raya Puasa", 35 | "2023-05-01": "Labour Day", 36 | "2023-06-03": "Vesak Day", 37 | "2023-06-29": "Hari Raya Haji", 38 | "2023-08-09": "National Day", 39 | "2023-11-12": "Deepavali", 40 | "2023-11-13": "Deepavali (in lieu)", 41 | "2023-12-25": "Christmas Day", 42 | }, 43 | ) 44 | } 45 | -------------------------------------------------------------------------------- /nholidays/uk/england_schedule.go: -------------------------------------------------------------------------------- 1 | package uk 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/yut-kt/goholiday/nholidays" 7 | ) 8 | 9 | func NewEngland() *nholidays.ScheduleImpl { 10 | return nholidays.New( 11 | map[time.Weekday]struct{}{ 12 | time.Saturday: {}, 13 | time.Sunday: {}, 14 | }, 15 | map[string]string{ 16 | "2022-01-01": "New Year's Day", 17 | "2022-01-03": "New Year's Day (in lieu)", 18 | "2022-04-15": "Good Friday", 19 | "2022-04-18": "Easter Monday", 20 | "2022-05-02": "Early May Bank Holiday", 21 | "2022-06-02": "Spring Bank Holiday", 22 | "2022-06-03": "Queen's Platinum Jubilee Bank Holiday", 23 | "2022-08-29": "Summer Bank Holiday", 24 | "2022-12-25": "Christmas Day", 25 | "2022-12-26": "Boxing Day", 26 | "2022-12-27": "Christmas Day (in lieu)", 27 | "2023-01-01": "New Year's Day", 28 | "2023-01-02": "New Year's Day", 29 | "2023-04-07": "Good Friday", 30 | "2023-04-10": "Easter Monday", 31 | "2023-05-01": "Early May Bank Holiday", 32 | "2023-05-29": "Spring Bank Holiday", 33 | "2023-08-28": "Summer Bank Holiday", 34 | "2023-12-25": "Christmas Day", 35 | "2023-12-26": "Boxing Day", 36 | }, 37 | ) 38 | } 39 | -------------------------------------------------------------------------------- /nholidays/uk/northern_ireland_schedule.go: -------------------------------------------------------------------------------- 1 | package uk 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/yut-kt/goholiday/nholidays" 7 | ) 8 | 9 | func NewNorthernIreland() *nholidays.ScheduleImpl { 10 | return nholidays.New( 11 | map[time.Weekday]struct{}{ 12 | time.Saturday: {}, 13 | time.Sunday: {}, 14 | }, 15 | map[string]string{ 16 | "2022-01-01": "New Year's Day", 17 | "2022-01-03": "New Year's Day (in lieu)", 18 | "2022-03-17": "St. Patrick's Day", 19 | "2022-04-15": "Good Friday", 20 | "2022-04-18": "Easter Monday", 21 | "2022-05-02": "Early May Bank Holiday", 22 | "2022-06-02": "Spring Bank Holiday", 23 | "2022-06-03": "Queen's Platinum Jubilee Bank Holiday", 24 | "2022-07-12": "Battle of the Boyne", 25 | "2022-08-29": "Summer Bank Holiday", 26 | "2022-12-25": "Christmas Day", 27 | "2022-12-26": "Boxing Day", 28 | "2022-12-27": "Christmas Day (in lieu)", 29 | "2023-01-01": "New Year's Day", 30 | "2023-01-02": "New Year's Day (in lieu)", 31 | "2023-03-17": "St. Patrick's Day", 32 | "2023-04-07": "Good Friday", 33 | "2023-04-10": "Easter Monday", 34 | "2023-05-01": "Early May Bank Holiday", 35 | "2023-05-29": "Spring Bank Holiday", 36 | "2023-07-12": "Battle of the Boyne", 37 | "2023-08-28": "Summer Bank Holiday", 38 | "2023-12-25": "Christmas Day", 39 | "2023-12-26": "Boxing Day", 40 | }, 41 | ) 42 | } 43 | -------------------------------------------------------------------------------- /nholidays/uk/scotland_schedule.go: -------------------------------------------------------------------------------- 1 | package uk 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/yut-kt/goholiday/nholidays" 7 | ) 8 | 9 | func NewScotland() *nholidays.ScheduleImpl { 10 | return nholidays.New( 11 | map[time.Weekday]struct{}{ 12 | time.Saturday: {}, 13 | time.Sunday: {}, 14 | }, 15 | map[string]string{ 16 | "2022-01-01": "New Year's Day", 17 | "2022-01-03": "New Year's Day (in lieu)", 18 | "2022-01-04": "New Year Holiday (in lieu)", 19 | "2022-04-15": "Good Friday", 20 | "2022-05-02": "Early May Bank Holiday", 21 | "2022-06-02": "Spring Bank Holiday", 22 | "2022-06-03": "Queen's Platinum Jubilee bank holiday", 23 | "2022-08-01": "Summer Bank Holiday", 24 | "2022-11-30": "St. Andrew's Day", 25 | "2022-12-25": "Christmas Day", 26 | "2022-12-26": "Boxing Day", 27 | "2022-12-27": "Christmas Day (in lieu)", 28 | "2023-01-01": "New Year's Day", 29 | "2023-01-02": "New Year's Day", 30 | "2023-01-03": "New Year Holiday", 31 | "2023-04-07": "Good Friday", 32 | "2023-05-01": "Early May Bank Holiday", 33 | "2023-05-29": "Spring Bank Holiday", 34 | "2023-08-07": "Summer Bank Holiday", 35 | "2023-11-30": "St. Andrew's Day", 36 | "2023-12-25": "Christmas Day", 37 | "2023-12-26": "Boxing Day", 38 | }, 39 | ) 40 | } 41 | -------------------------------------------------------------------------------- /nholidays/uk/wales_schedule.go: -------------------------------------------------------------------------------- 1 | package uk 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/yut-kt/goholiday/nholidays" 7 | ) 8 | 9 | func NewWales() *nholidays.ScheduleImpl { 10 | return nholidays.New( 11 | map[time.Weekday]struct{}{ 12 | time.Saturday: {}, 13 | time.Sunday: {}, 14 | }, 15 | map[string]string{ 16 | "2022-01-01": "New Year's Day", 17 | "2022-01-03": "New Year's Day (in lieu)", 18 | "2022-04-15": "Good Friday", 19 | "2022-04-18": "Easter Monday", 20 | "2022-05-02": "Early May Bank Holiday", 21 | "2022-06-02": "Spring Bank Holiday", 22 | "2022-06-03": "Queen's Platinum Jubilee Bank Holiday", 23 | "2022-08-29": "Summer Bank Holiday", 24 | "2022-12-25": "Christmas Day", 25 | "2022-12-26": "Boxing Day", 26 | "2022-12-27": "Christmas Day (in lieu)", 27 | "2023-01-01": "New Year's Day", 28 | "2023-01-02": "New Year's Day", 29 | "2023-04-07": "Good Friday", 30 | "2023-04-10": "Easter Monday", 31 | "2023-05-01": "Early May Bank Holiday", 32 | "2023-05-29": "Spring Bank Holiday", 33 | "2023-08-28": "Summer Bank Holiday", 34 | "2023-12-25": "Christmas Day", 35 | "2023-12-26": "Boxing Day", 36 | }, 37 | ) 38 | } 39 | -------------------------------------------------------------------------------- /script/holiday_downloader.sh: -------------------------------------------------------------------------------- 1 | set -xe 2 | 3 | declare -A urls=( 4 | ["jp"]="https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv" 5 | ) 6 | 7 | for key in "${!urls[@]}"; do 8 | original_path="nholidays/${key}/national_holidays.csv" 9 | download_path="nholidays/${key}/tmp.csv" 10 | 11 | wget -O "${download_path}" "${urls[${key}]}" 12 | nkf -w --overwrite "${download_path}" 13 | 14 | if [ ! -e "${original_path}" ];then 15 | echo "${original_path} not exist" 16 | mv "${download_path}" "${original_path}" 17 | elif [ -n "$(diff "${download_path}" "${original_path}")" ]; then 18 | echo "diff found ${download_path} ${original_path}" 19 | mv "${download_path}" "${original_path}" 20 | else 21 | echo "no updated" 22 | rm "${download_path}" 23 | fi 24 | 25 | done 26 | --------------------------------------------------------------------------------