Aqlier/ 7月 27, 2022/ iOS

Xcode で関数使用で祝日の算出が可能ですが、祝日判定関数が発見できないときに実装したものになります。
曜日を判定した後、休日でない場合だけ祝日か否か判定を行います。

最終的に、「平日土曜日休日・祝日」の3パターンになります。

グローバル関数:Wdate_chk(文字型)・・・ここに日付をセット。
グローバル関数:Wyasumi(数値型)・・・結果をセット(1:平日、2:土曜日、3:休日・祝日)
ローカル関数:Wdate(数値型)・・・switchで使用可能な変数に変換

以下のソースは、Objective-cです。

-(void)yasumi{      //休日チェック
    
    NSInteger weekday;
    
    // NSDateComponentsで年・月・日・曜日を取得する
    NSCalendar *calendar = [NSCalendar currentCalendar];
    
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    [fmt setDateFormat:@"yyyyMMdd"];
    
    NSDate *formatterDate = [fmt dateFromString:Wdate_chk];
    
    NSDateComponents *components = [calendar components: NSCalendarUnitYear | NSCalendarUnitMonth|
                                    NSCalendarUnitDay | NSCalendarUnitWeekday fromDate:formatterDate];
    
    weekday = components.weekday;
    
    switch (weekday) {
        case 1: //日曜日
            Wyasumi = 3;    //日曜日
            break;
        case 7: //土曜日
            Wyasumi = 2;    //土曜日
            break;
        default:    //平日
            Wyasumi = 1;    //平日
            break;
    }
    
    NSInteger Wdate = [Wdate_chk intValue];
    
    if (Wyasumi != 3){
        switch (Wdate){
            case 20220101:
            case 20220102:
            case 20220103:
            case 20220110:
            case 20220211:
            case 20220223:
            case 20220321:
            case 20220429:
            case 20220503:
            case 20220504:
            case 20220505:
            case 20220718:
            case 20220811:
            case 20220919:
            case 20220923:
            case 20221010:
            case 20221103:
            case 20221123:
            case 20221230:
            case 20221231:
                Wyasumi = 3;
                break;
        }
    }
    
    switch(Wyasumi){
        case 1: //平日
            self.N02bus_week.text = @"平日";
            self.N02bus_week.textColor = [UIColor blueColor];
            break;
            
        case 2: //土曜日
            self.N02bus_week.text = @"土曜";
            self.N02bus_week.textColor = [UIColor purpleColor];
            break;
            
        case 3: //日曜日
            self.N02bus_week.text = @"休日";
            self.N02bus_week.textColor = [UIColor redColor];
            break;
    }
}