回答編集履歴
3
以上・以下に対応
answer
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
this_year_summer_end += datetime.timedelta(days=1)
|
29
29
|
|
30
30
|
# 判定して返す
|
31
|
-
if this_year_summer_start < date < this_year_summer_end:
|
31
|
+
if this_year_summer_start <= date <= this_year_summer_end:
|
32
32
|
return "summer"
|
33
33
|
else:
|
34
34
|
return "winter"
|
@@ -48,9 +48,11 @@
|
|
48
48
|
|
49
49
|
if __name__ == "__main__":
|
50
50
|
main()
|
51
|
-
|
52
51
|
```
|
53
52
|
|
54
53
|
ロケール絡みでトラブるかもしれないので、よく確認してください。
|
55
54
|
何回も呼ぶのであれば、3月第2日曜日と11月第1日曜日の計算はキャッシュされるような仕組みを作った方が良いかもしれません。
|
56
|
-
以上未満がよくわからなかったのと、冬と夏は逆な気がしたので、とりあえずソースの通りの判定にしてあります。
|
55
|
+
以上未満がよくわからなかったのと、冬と夏は逆な気がしたので、とりあえずソースの通りの判定にしてあります。
|
56
|
+
|
57
|
+
### 追記
|
58
|
+
区間は以上・以下(第二・第一日曜日含む)とのことなのでそれに合わせて判定処理を修正しました。
|
2
ソース変数名修正(time→date)
answer
CHANGED
@@ -4,8 +4,8 @@
|
|
4
4
|
import datetime
|
5
5
|
|
6
6
|
def check_summer_winter(date_str):
|
7
|
-
|
7
|
+
date = datetime.datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
|
8
|
-
year =
|
8
|
+
year = date.year
|
9
9
|
|
10
10
|
# その年の3月の第二日曜日を決める
|
11
11
|
this_year_summer_start = datetime.datetime(year, 3, 1)
|
@@ -28,7 +28,7 @@
|
|
28
28
|
this_year_summer_end += datetime.timedelta(days=1)
|
29
29
|
|
30
30
|
# 判定して返す
|
31
|
-
if this_year_summer_start <
|
31
|
+
if this_year_summer_start < date < this_year_summer_end:
|
32
32
|
return "summer"
|
33
33
|
else:
|
34
34
|
return "winter"
|
1
コメント修正
answer
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
break
|
18
18
|
this_year_summer_start += datetime.timedelta(days=1)
|
19
19
|
|
20
|
-
#
|
20
|
+
# その年の11月の第一日曜日を決める
|
21
21
|
this_year_summer_end = datetime.datetime(year, 11, 1)
|
22
22
|
sunday_count = 0
|
23
23
|
while True:
|