handMadeCalendarAdvance(CalculateCalendarLogic)
这个库 CalculateCalendarLogic(示例项目名称为 handMadeCalendarAdvance)可以判断日本节假日。
描述
这个库 'CalculateCalendarLogic' 可以判断日本节假日。当使用这个库时,可以很容易地判断日本节假日。名为 'judgeJapaneseHoliday' 的方法将年、月、日的变量存储在参数中,返回 true 或 false。
About CalculateCalendarLogic.swift
/* CalculateCalendarLogic.swift */
public func judgeJapaneseHoliday(year: Int, month: Int, day: Int) -> Bool {
/**
*
* - Description judge japanese holiday
* - parameter year: year value (Int)
* - parameter month: month value (Int)
* - parameter day: day value (Int)
* - returns: result (Bool)
*/
// judge holiday logic...
}
需求 & 支持
- iOS 13.0 或更高版本
- macOS 11.0 或更高版本
安装
我们可以使用这个库与CocoaPods、Carthage、Swift Package Manager、手动方式。
使用 CocoaPods
创建 Podfile 并在 Podfile 中指定
★ Podfile 示例
platform :ios, '13.0'
use_frameworks!
target [YOUR PROJECT NAME]' do
pod 'CalculateCalendarLogic'
end
使用 Carthage
创建 Carthage 并在 Cartfile 中指定
★ Cartfile
github "fumiyasac/handMadeCalendarAdvance"
使用 Swift Package Manager
使用 Xcode,转到 文件 -> Swift 包 -> 添加包依赖并输入以下 URL:https://github.com/fumiyasac/handMadeCalendarAdvance
手动
将 CalculateCalendarLogic/CalculateCalendarLogic.swift 文件中的所有文件复制到您的项目中。
作者
fumiyasac(桜井輝弥)
示例
如下所示。
/* ViewController.swift */
// Step1: import CalculateCalendarLogic (If you install manually, you don't need import statement.)
import CalculateCalendarLogic
// Step2: create instance of CalculateCalendarLogic
let holiday = CalculateCalendarLogic()
...
// Step3: input year, month and day values into judgeJapaneseHoliday method.
let result: Bool = holiday.judgeJapaneseHoliday(year: 2016, month: 1, day: 1)
// Result:
print("2016 January 1:\(result)")
//You will display「2016 January 1:true」in your Xcode console.
许可证
贡献者
特别感谢
- akio0911:技术支持与重构
- akuraru:重构与修复bug
- keygx:如何使用CocoaPods
- econa77:Mac OS 10.10 支持
- essochi:Ver0.1.7
- myammm:Ver0.2.0
- kazuomatz:重构与修复bug
- uhooi:添加Github Actions
以及其他iOS开发者。
handMadeCalendarAdvance(CalculateCalendarLogic)
Swift版本的日本节假日判定代码和日历库及示例
本例介绍了日本节假日的判定逻辑以及如何利用此逻辑创造的日历示例。(*实际计算逻辑请参考CalculateCalendarLogic.swift文件)
概要
创建了一个用于判定日本节假日的结构体。如何使用,请将CalculateCalendarLogic.swift文件复制到您的项目中使用以下「用法」为参考。在制作其他日历应用或在您的应用中使用时也非常方便。
关于库的内部设计
通过以下方式传递年、月、日作为参数给judgeJapaneseHoliday方法,就可以判断该日是否为节假日(调休日)。返回类型为bool,方便进行判定。
/* CalculateCalendarLogic.swift */
public func judgeJapaneseHoliday(year: Int, month: Int, day: Int) -> Bool {
/**
*
* 祝日になる日を判定する
* (引数) year: Int, month: Int, day: Int
* weekdayIndexはWeekdayのenumに該当する値(0...6)が入る
* 参考資料1. カレンダーロジックの参考 :http://p-ho.net/index.php?page=22
* 参考資料2. 書き方(タプル)の参考 :http://blog.kitoko552.com/entry/2015/06/17/213553
* 参考資料3. [Swift] 関数における引数/戻り値とタプルの関係 :http://dev.classmethod.jp/smartphone/swift-function-tupsle/
*
*/
// 実装は実際のクラスを参照して頂ければ幸いです。
}
支持的版本和功能
- iOS 13.0 或更高版本
- macOS 11.0 或更高版本
导入方法
此库支持CocoaPods、Carthage、Swift Package Manager以及手动添加。
CocoaPods 导入
在项目内创建Podfile文件,并按以下方式说明。
★ Podfile 说明示例
target '[自分のプロジェクト名]' do
use_frameworks!
pod 'CalculateCalendarLogic'
end
Carthage 导入
在项目内创建Cartfile文件,并按以下方式说明。
★ Cartfile 说明
github "fumiyasac/handMadeCalendarAdvance"
Swift Package Manager 导入
使用您的Xcode,选择「文件 -> Swift Packages -> 添加包依赖」,然后输入后述URL并按Enter键。 https://github.com/fumiyasac/handMadeCalendarAdvance
手动添加
此外,如果您要手动添加库文件,请将CalculateCalendarLogic.swift
文件添加到您自己的项目中。
导入示例:无需使用库的日历样本
作者
fumiyasac(桜井輝弥)
项目中实现示例
只需要将想要判断的年月日作为参数设置即可。
/* ViewController.swift */
// Step1: ライブラリのインポート(手動で導入した場合は不要)
import CalculateCalendarLogic
// Step2: CalculateCalendarLogicのインスタンスを作成
let holiday = CalculateCalendarLogic()
...
// Step3: 使用する際は引数を入れての判定を行う
let result: Bool = holiday.judgeJapaneseHoliday(year: 2016, month: 1, day: 1)
// 実行結果
print("2016年1月1日:\(result)")
//コンソールでは「2016年1月1日:true」と表示されます
尽管本实现中是布尔类型的判断,但可以通过定制此方法来更改返回值以适应各种用途,例如“判断节假日并返回节假日名称”等。
测试用例及其他
当前程序在CalculateCalendarLogic.swift中考虑的测试用例如下所示。
- 今年(2016年至2022年)的节假日判断正确执行
- 黄金周的判断正确执行(※示例:2017年/2019年/2021年)
- 银星周的判断正确执行(※示例:2015年/2026年/2032年)
- 春分和秋分的判断正确执行(※示例:2000年至2030年)
测试用例将逐步添加。
许可证
更新历史
可能还有不完美的地方,如果发现有,请发送PullRequest等。如果这个示例能以某种方式帮助到应用程序的开发,那就太好了。
- 2023.01.01: 进行了维护应对,并为iOS16添加了UICalendarView的可用性示例。
- 2021.06.05: 添加了Gihub Actions(uhooi先生)
- 2020.12.02: 执行了Xcode12.2的应对/有关2021年假期的补充应对/修正示例代码等。
- 2019.06.26: 执行了Swift5.0及Xcode10.2.1的应对。
- 2019.01.23: 对2019年的假期进行了补充应对(kazuomatz先生)。
- 2018.12.02: 执行了Swift4.2及Xcode10的应对。
- 2018.08.08: 执行了对2020年日历的应对(myammm先生)。
- 2018.07.04: 执行了Swift4.1及XCode9.4的应对(essochi先生)。
- 2017.10.10: 执行了Swift4及XCode9的应对。
- 2017.01.14: 支持从macOS10.10开始的版本。
- 2016.12.31: 对CocoaPods & Carthage进行了相应处理。
- 2016.12.29: 对Swift3系列进行了应对。
- 2016.10.13: 创建了Swift2.3及Swift3.0分支
- 2016.09.03: 对CocoaPods进行了相应处理(包括文档修正和补充)
- 2016.05.28: 在README中进行了补充(包括Carthage导入步骤和文本的修正等)
- 2016.05.09: 推出了在日历中实现的示例(使用UICollectionView)
- 2016.05.01: 对CalculateCalendarLogic.swift的实现和节假日判断测试用例进行了添加
致谢
在此库的开发过程中,我衷心感谢akio0911、akuraru、keygx、econa77、kazuomatz、essochi、myammm、uhooi等人以及更多人为我所提供的宝贵意见和建议,不胜感激。同时,非常感谢大家定期提交的Pull Requests等建议,这对我们真的非常有帮助。