Skip to content

holiday-jp/holiday_jp-swift

Repository files navigation

holiday_jp Swift

Build Status CircleCI CocoaPods Compatible Carthage Compatible Platform

🎌 Japanese holiday for Swift

Requirements

  • Swift 4

Installing

CocoaPods

pod 'HolidayJp', '~> 0.1'

Carthage

github 'holiday-jp/holiday_jp-swift' ~> 0.1

Swift Package Manager

.Package(url: "https://github.com/holiday-jp/holiday_jp-swift.git", majorVersion: 0, minor: 1),

Example

import HolidayJp

let today = Date()
if HolidayJp.isHoliday(today) {
    print("Today is a holiday!")
}

API

class HolidayJp

HolidayJp.isHoliday(_: Date) -> Bool

Judge whether it is a holiday in Japan. If a date is holiday, return true.

let today = Date()
if HolidayJp.isHoliday(today) {
    print("Today is a holiday!")
}

HolidayJp.isHoliday(_: Date, calendar: Calendar) -> Bool

Judge whether it is a holiday in Japan. If a date is holiday, return true. calendar is used to compute YYYY-MM-DD.

let calendar = Calendar(identifier: .iso8601)
let today = Date()

if HolidayJp.isHoliday(today, calendar: calendar) {
    print("Today is a holiday!")
}

HolidayJp.isHoliday(year: Int, month: Int: day: Int) -> Bool

Judge whether it is a holiday in Japan. If a date is holiday, return true.

if HolidayJp.isHoliday(year: 2018, month: 12, day: 1) {
    print("2018/12/01 is a holiday!")
}

HolidayJp.between(_: Date, and: Date) -> [Holiday]

Return all holidays in period.

let calendar = Calendar(identifier: .iso8601)
let date1 = calendar.date(from: DateComponents(year: 2017, month: 1, day: 1))!
let date2 = calendar.date(from: DateComponents(year: 2017, month: 1, day: 31))!

// Show all holidays in 2017/01/01 ~ 2017/1/31
let holidays = HolidayJp.between(date1, and: date2)
for holiday in holidays {
    print(holiday.ymd)
}

HolidayJp.between(_: Date, and: Date, calendar: Calendar) -> [Holiday]

Return all holidays in period. calendar is used to compute YYYY-MM-DD.

let calendar = Calendar(identifier: .iso8601)
let date1 = calendar.date(from: DateComponents(year: 2017, month: 1, day: 1))!
let date2 = calendar.date(from: DateComponents(year: 2017, month: 1, day: 31))!

// Show all holidays in 2017/01/01 ~ 2017/1/31
let holidays = HolidayJp.between(date1, and: date2, calendar: calendar)
for holiday in holidays {
    print(holiday.ymd)
}

struct Holiday

Holiday struct represents holiday data.

let calendar = Calendar(identifier: .iso8601)
let date = calendar.date(from: DateComponents(year: 2014, month: 9, day: 23))!
let holiday = HolidayJp.between(date, and: date).first!

print(holiday.ymd)    // "2015-09-23"
print(holiday.week)   // "火"
print(holiday.weekEn) // "Tuesday"
print(holiday.name)   // "秋分の日"
print(holiday.nameEn) // "Autumnal Equinox Day"
print(holiday.date()) // Date(2015-09-23 15:00:00 +0000)

For developer

Development

Please create Xcode project with Swift Package Manager, and open it.

$ swift package generate-xcodeproj
$ open HolidayJp.xcodeproj

And also, please run ruby script to re-generate holidays definitions.

$ ./scripts/generate.rb

Test

$ swift test

Publish to CocoaPods

$ pod lib lint
$ pod trunk push

See also

License

MIT © Pine Mizune