📅 SwiftyHolidays

一个 Swift 库,用于检查给定的 Date 是否为特定国家或州的假日。它还可以生成给定年份的假日列表。

📱 示例项目

请随时查看 SwiftyHolidays 示例,以更好地了解如何使用此库。

⚙️ 安装

Xcode 项目

在 Xcode 中打开您的项目,点击 File > Swift Packages > Add Package Dependency 并输入 https://github.com/MaxHaertwig/SwiftyHolidays.git

Swift Package

打开 Package.swift 并将该软件包添加到您的项目依赖项中

let package = Package(
    ...
    dependencies: [
        ...
        .package(url: "https://github.com/MaxHaertwig/SwiftyHolidays.git", from: "1.0.0")
    ]
)

📝 用法

LocalDate

LocalDate 类用于抽象化时间和时区的概念。 LocalDate 可以转换为 Date,反之亦然。

import SwiftyHolidays

let independenceDay = LocalDate(2020, .july, 4)!
>>> independenceDay.isHoliday(in: .unitedStates)
true
>>> independenceDay.isHoliday(in: .germany)
false

let cesarChavezDay = LocalDate(2020, .march, 31)!
>>> cesarChavezDay.isHoliday(in: .unitedStates(state: .california))
true
>>> cesarChavezDay.isHoliday(in: .unitedStates(state: .michigan))
false

let holiday = cesarChavezDay.getHoliday(in: .unitedStates(state: .california))
>>> holiday?.name
"César Chávez Day"
>>> holiday?.date
SwiftyHolidays.LocalDate(year: 2020, month: 3, day: 31)
>>> cesarChavezDay.getHoliday(in: .unitedStates(state: .michigan))
nil

>>> LocalDate.asDate(in: TimeZone(abbreviation: "PST")!)
2020-03-31 07:00:00 +0000

也可以使用 Swift 的 Date 类。相关方法需要一个 TimeZone 来解释日期。如果未指定,将使用给定国家(或州)的默认时区。

import SwiftyHolidays

let independenceDayUTC = Date(timeIntervalSince1970: 1562198400)
>>> independenceDayUTC.isHoliday(in: .unitedStates(state: .california))
false
>>> independenceDayUTC.isHoliday(in: .unitedStates(state: .california), timeZone: TimeZone(abbreviation: "GMT")!)
true

>>> independenceDayUTC.asLocalDate(in: TimeZone(abbreviation: "GMT")!)
SwiftyHolidays.LocalDate(year: 2019, month: 7, day: 4)
>>> independenceDayUTC.asLocalDate(in: TimeZone(abbreviation: "PST")!)
SwiftyHolidays.LocalDate(year: 2019, month: 7, day: 3)

可以初始化 CountryCountryWithState 的实例来生成其假日列表。

import SwiftyHolidays

>>> Country.germany.allHolidays(in: 2020)
>>> Country.germany.allHolidays(in: 2020..<2030)
>>> CountryWithState.germany(state: .berlin).allHolidays(in: 2020)

🌍 支持的国家/地区

您还可以调用 Country.availableCountries 来获取支持的国家/地区列表。

🤝 贡献

欢迎提供反馈、问题Pull Requests

📄 许可证

SwiftyHolidays 在 MIT 许可下发布。 有关更多信息,请参见 LICENSE