Xcode で関数使用で祝日の算出が可能ですが、祝日判定関数が発見できないときに実装したものになります。
曜日を判定した後、休日でない場合だけ祝日か否か判定を行います。
最終的に、「平日、土曜日、休日・祝日」の3パターンになります。
グローバル関数:Wdate_chk(文字型)・・・ここに日付をセット。
グローバル関数:Wyasumi(数値型)・・・結果をセット(1:平日、2:土曜日、3:休日・祝日)
ローカル関数:Wdate(数値型)・・・switchで使用可能な変数に変換
以下のソースは、Objective-cです。
1 | -( void )yasumi{ //休日チェック |
2 | |
3 | NSInteger weekday; |
4 | |
5 | // NSDateComponentsで年・月・日・曜日を取得する |
6 | NSCalendar *calendar = [ NSCalendar currentCalendar]; |
7 | |
8 | NSDateFormatter *fmt = [[ NSDateFormatter alloc] init]; |
9 | [fmt setDateFormat: @"yyyyMMdd" ]; |
10 | |
11 | NSDate *formatterDate = [fmt dateFromString:Wdate_chk]; |
12 | |
13 | NSDateComponents *components = [calendar components: NSCalendarUnitYear | NSCalendarUnitMonth | |
14 | NSCalendarUnitDay | NSCalendarUnitWeekday fromDate:formatterDate]; |
15 | |
16 | weekday = components.weekday; |
17 | |
18 | switch (weekday) { |
19 | case 1: //日曜日 |
20 | Wyasumi = 3; //日曜日 |
21 | break ; |
22 | case 7: //土曜日 |
23 | Wyasumi = 2; //土曜日 |
24 | break ; |
25 | default : //平日 |
26 | Wyasumi = 1; //平日 |
27 | break ; |
28 | } |
29 | |
30 | NSInteger Wdate = [Wdate_chk intValue]; |
31 | |
32 | if (Wyasumi != 3){ |
33 | switch (Wdate){ |
34 | case 20220101: |
35 | case 20220102: |
36 | case 20220103: |
37 | case 20220110: |
38 | case 20220211: |
39 | case 20220223: |
40 | case 20220321: |
41 | case 20220429: |
42 | case 20220503: |
43 | case 20220504: |
44 | case 20220505: |
45 | case 20220718: |
46 | case 20220811: |
47 | case 20220919: |
48 | case 20220923: |
49 | case 20221010: |
50 | case 20221103: |
51 | case 20221123: |
52 | case 20221230: |
53 | case 20221231: |
54 | Wyasumi = 3; |
55 | break ; |
56 | } |
57 | } |
58 | |
59 | switch (Wyasumi){ |
60 | case 1: //平日 |
61 | self .N02bus_week.text = @"平日" ; |
62 | self .N02bus_week.textColor = [UIColor blueColor]; |
63 | break ; |
64 | |
65 | case 2: //土曜日 |
66 | self .N02bus_week.text = @"土曜" ; |
67 | self .N02bus_week.textColor = [UIColor purpleColor]; |
68 | break ; |
69 | |
70 | case 3: //日曜日 |
71 | self .N02bus_week.text = @"休日" ; |
72 | self .N02bus_week.textColor = [UIColor redColor]; |
73 | break ; |
74 | } |
75 | } |