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;
}
}
