質問するログイン新規登録

回答編集履歴

3

以上・以下に対応

2018/04/07 11:56

投稿

hayataka2049
hayataka2049

スコア30939

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)

2018/04/07 11:56

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -4,8 +4,8 @@
4
4
  import datetime
5
5
 
6
6
  def check_summer_winter(date_str):
7
- time = datetime.datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
7
+ date = datetime.datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
8
- year = time.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 < time < 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"

1

コメント修正

2018/04/07 11:52

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -17,7 +17,7 @@
17
17
  break
18
18
  this_year_summer_start += datetime.timedelta(days=1)
19
19
 
20
- # 年の11月の第一日曜日を決める
20
+ # その年の11月の第一日曜日を決める
21
21
  this_year_summer_end = datetime.datetime(year, 11, 1)
22
22
  sunday_count = 0
23
23
  while True: