Skip to content
/ jhol Public

Go language library to check Japanese holidays using Google Calendar.

License

Notifications You must be signed in to change notification settings

kanmu/jhol

Folders and files

NameName
Last commit message
Last commit date
Nov 14, 2024
Jun 18, 2023
Nov 14, 2024
Jun 18, 2023
Jun 17, 2023
Nov 14, 2024
Nov 14, 2024
Jun 17, 2023
Nov 14, 2024
Nov 14, 2024
Nov 14, 2024
Nov 14, 2024
Nov 14, 2024
Nov 14, 2024
Nov 14, 2024
Feb 17, 2025
Feb 17, 2025
Jun 17, 2023
Jun 18, 2023
Jun 17, 2023

Repository files navigation

jhol

test Go Reference Go Report Card

Go language library to check Japanese holidays using NAOJ Calendar.

curl -s -H "X-goog-api-key: $JHOL_API_KEY" \
  'https://www.googleapis.com/calendar/v3/calendars/2bk907eqjut8imoorgq1qa4olc%40group.calendar.google.com/events?showDeleted=false&singleEvents=true&orderBy=startTime&timeMin=2019-01-01T00:00:00Z&maxResults=100' \
  | jq -c '.items[] | {start, summary}'

Preparation

  1. Enable Google Calendar API.
  2. Create an API Key.

Usage

package main

import (
	"fmt"
	"os"
	"time"

	"github.com/kanmu/jhol"
)

func parseDate(s string) time.Time {
	d, _ := time.ParseInLocation("2006-01-02", s, time.Local)
	return d
}

func main() {
	apiKey := os.Getenv("JHOL_API_KEY")
	client := jhol.NewClient(apiKey).WithoutContext()

	date := parseDate("2023-07-17")
	h, _ := client.Get(date)
	fmt.Println(h) //=> 2023-07-17	海の日

	yes, _ := client.IsHoliday(date)
	fmt.Println(yes) //=> true

	yes, _ = client.IsTodayHoliday()
	fmt.Println(yes)

	h, _ = client.Next(date)
	fmt.Println(h) //=> 2023-07-17	海の日

	holidays, _ := client.NextN(date, 3)
	fmt.Println(holidays) //=> [2023-07-17	海の日 2023-08-11	山の日 2023-09-18	敬老の日]

	holidays, _ = client.Between(date, parseDate("2023-08-11"))
	fmt.Println(holidays) //=> [2023-07-17	海の日 2023-08-11	山の日]
}

CLI

Installation

brew install kanmu/tools/jhol

Usage

Usage: jhol --api-key=STRING <command>

Flags:
  -h, --help              Show context-sensitive help.
      --version
      --api-key=STRING    Google API Key ($JHOL_API_KEY)

Commands:
  next --api-key=STRING [<n>]
    Show next holidays.

  is-holiday --api-key=STRING [<date>]
    Check whether the specified date is a holiday.

Run "jhol <command> --help" for more information on a command.
$ export JHOL_API_KEY=...

$ jhol next
2023-07-17	海の日
2023-08-11	山の日
2023-09-18	敬老の日

$ jhol is-holiday 2023-07-17
true

$ jhol is-holiday # today
false

$ jhol next 5 -f '%Y/%m/%d(%a)'
2023/07/17(Mon)	海の日
2023/08/11(Fri)	山の日
2023/09/18(Mon)	敬老の日
2023/09/23(Sat)	秋分の日
2023/10/09(Mon)	スポーツの日