回答編集履歴
5
補足追記
test
CHANGED
@@ -1,6 +1,20 @@
|
|
1
1
|
もはや作ってしまった方が早いです。
|
2
2
|
|
3
|
+
|
4
|
+
|
3
5
|
jpholidayはメンテはされているようですが、一般的に使うライブラリである、という感じはうけません。また特別休日の追加はできるようなのですが、ベースとなる休日を削除はできなさそうなので、質問者の会社が「来週の月曜振替休日は年間の調整で出勤日にします!」みたいな状況には対応できないかもです。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
また、最初は面倒ですが、このように作っておくことで、以下メリットがあると思います。
|
10
|
+
|
11
|
+
- 来年の予定の登録や、今年の日程の修正が必要になった際に、登録がやりやすい(会社の休日一覧表とか、自分の年休日とかをそのまま登録すればよく、何か変更して別の日を登録するといった、登録に頭を悩ませることは不要)
|
12
|
+
|
13
|
+
- 今後「週報の暫定版を、休日では無い週末に提出せよ!」みたいな別の要件が発生した場合に拡張がしやすい
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
データを、外側でファイル定義するとかは、もはや応用なので、ご自分でカスタマイズしてみてください。terateilはプログラマーの問題解決の場ですので、「完成されて後はコード見なくてもOK!といった回答」ではなく、「質問者様のコードに組み込んでどんどん拡張していただける元となる回答」を心がけました。
|
4
18
|
|
5
19
|
|
6
20
|
|
4
一部修正
test
CHANGED
@@ -8,6 +8,14 @@
|
|
8
8
|
|
9
9
|
class MyDateTime:
|
10
10
|
|
11
|
+
# Prioritize upper set of days, ignore lower duplicated elements.
|
12
|
+
|
13
|
+
# Of courese, you must register the future calendars,
|
14
|
+
|
15
|
+
# in odrder not to work on many days! :-)
|
16
|
+
|
17
|
+
special_workdays = {}
|
18
|
+
|
11
19
|
special_holidays = {
|
12
20
|
|
13
21
|
'2020-1-2', '2020-1-3', '2020-8-11', '2020-8-12', '2020-8-13', '2020-8-14',
|
@@ -15,8 +23,6 @@
|
|
15
23
|
'2020-12-29', '2020-12-30', '2020-12-31'
|
16
24
|
|
17
25
|
}
|
18
|
-
|
19
|
-
special_workdays = {}
|
20
26
|
|
21
27
|
national_holidays = {
|
22
28
|
|
@@ -46,13 +52,13 @@
|
|
46
52
|
|
47
53
|
def is_workday(cls, day):
|
48
54
|
|
55
|
+
if day in map(cls.strptime, cls.special_workdays):
|
56
|
+
|
57
|
+
return True
|
58
|
+
|
49
59
|
if day in map(cls.strptime, cls.special_holidays):
|
50
60
|
|
51
61
|
return False
|
52
|
-
|
53
|
-
if day in map(cls.strptime, cls.special_workdays):
|
54
|
-
|
55
|
-
return True
|
56
62
|
|
57
63
|
if day in map(cls.strptime, cls.national_holidays):
|
58
64
|
|
3
誤字の修正
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
}
|
18
18
|
|
19
|
-
special_workdays = {
|
19
|
+
special_workdays = {}
|
20
20
|
|
21
21
|
national_holidays = {
|
22
22
|
|
2
判断ロジックの修正
test
CHANGED
@@ -6,11 +6,17 @@
|
|
6
6
|
|
7
7
|
```Python
|
8
8
|
|
9
|
-
|
9
|
+
class MyDateTime:
|
10
10
|
|
11
|
+
special_holidays = {
|
11
12
|
|
13
|
+
'2020-1-2', '2020-1-3', '2020-8-11', '2020-8-12', '2020-8-13', '2020-8-14',
|
12
14
|
|
15
|
+
'2020-12-29', '2020-12-30', '2020-12-31'
|
16
|
+
|
17
|
+
}
|
18
|
+
|
13
|
-
clas
|
19
|
+
special_workdays = {'2020-11-23'}
|
14
20
|
|
15
21
|
national_holidays = {
|
16
22
|
|
@@ -23,16 +29,6 @@
|
|
23
29
|
'2020-11-3', '2020-11-23'
|
24
30
|
|
25
31
|
}
|
26
|
-
|
27
|
-
special_holidays = {
|
28
|
-
|
29
|
-
'2020-1-2', '2020-1-3', '2020-8-11', '2020-8-12', '2020-8-13', '2020-8-14',
|
30
|
-
|
31
|
-
'2020-12-29', '2020-12-30', '2020-12-31'
|
32
|
-
|
33
|
-
}
|
34
|
-
|
35
|
-
special_workdays = {}
|
36
32
|
|
37
33
|
|
38
34
|
|
@@ -50,10 +46,6 @@
|
|
50
46
|
|
51
47
|
def is_workday(cls, day):
|
52
48
|
|
53
|
-
if day in map(cls.strptime, cls.national_holidays):
|
54
|
-
|
55
|
-
return False
|
56
|
-
|
57
49
|
if day in map(cls.strptime, cls.special_holidays):
|
58
50
|
|
59
51
|
return False
|
@@ -61,6 +53,10 @@
|
|
61
53
|
if day in map(cls.strptime, cls.special_workdays):
|
62
54
|
|
63
55
|
return True
|
56
|
+
|
57
|
+
if day in map(cls.strptime, cls.national_holidays):
|
58
|
+
|
59
|
+
return False
|
64
60
|
|
65
61
|
return not (day.weekday() == 5 or day.weekday() == 6)
|
66
62
|
|
1
微修正
test
CHANGED
@@ -62,11 +62,7 @@
|
|
62
62
|
|
63
63
|
return True
|
64
64
|
|
65
|
-
|
65
|
+
return not (day.weekday() == 5 or day.weekday() == 6)
|
66
|
-
|
67
|
-
return False
|
68
|
-
|
69
|
-
return True
|
70
66
|
|
71
67
|
|
72
68
|
|