回答編集履歴

2

画像を追加しました。

2020/04/06 02:31

投稿

tatsu99
tatsu99

スコア5449

test CHANGED
@@ -69,3 +69,7 @@
69
69
  if birthday.strftime('%m%d').to_i >= "0401".to_i
70
70
 
71
71
  に変えてください。
72
+
73
+
74
+
75
+ ![実年齢と補正後の年齢](f894ed141f2b6640e058b9315c9d6b8f.png)

1

全面的に書き換えました。

2020/04/06 02:31

投稿

tatsu99
tatsu99

スコア5449

test CHANGED
@@ -4,12 +4,68 @@
4
4
 
5
5
 
6
6
 
7
- if (Date.today.strftime('%m').to_i < 4)
7
+ ```Ruby
8
8
 
9
- age = age - 1
9
+ if birthday.strftime('%m%d').to_i >= "0402".to_i
10
10
 
11
+ oso_umare = true
12
+
13
+ else
14
+
15
+ oso_umare = false
16
+
11
- end
17
+ end
18
+
19
+ if today.strftime('%m%d').to_i >= birthday.strftime('%m%d').to_i
20
+
21
+ have_birthday = true
22
+
23
+ else
24
+
25
+ have_birthday = false
26
+
27
+ end
28
+
29
+ if today.strftime('%m').to_i >= 4
30
+
31
+ if oso_umare == true && have_birthday == true
32
+
33
+ age = age - 1
34
+
35
+ end
36
+
37
+ else
38
+
39
+ if oso_umare == true || have_birthday == true
40
+
41
+ age = age - 1
42
+
43
+ end
44
+
45
+ end
46
+
47
+ ```
48
+
49
+ hoshi-takanoriさんが指摘した通り、1学年は4月2日生まれから翌年の4月1日生まれの児童生徒で構成される前提です。
50
+
51
+ 遅生まれは4月2日以降に生まれた生徒です。(oro_umare=true)
52
+
53
+ その年の誕生日を迎えた場合、have_birthday = trueとなります。
54
+
55
+ 年齢算出時、
56
+
57
+ 現在日が4月以降(4月含む)なら、遅生まれで、誕生日を迎えた場合、年齢から1を引きます。
58
+
59
+ 現在日が3月以前(3月含む)なら、遅生まれ、又は誕生日を迎えた場合、年齢から1を引きます。
12
60
 
13
61
 
14
62
 
15
- 日の月が4月未満ならageから1を引くようにします。
63
+ もし、1学年は4月1生まれから翌年331日生まれの児童生徒で構成される前提にしなら、
64
+
65
+ if birthday.strftime('%m%d').to_i >= "0402".to_i
66
+
67
+
68
+
69
+ if birthday.strftime('%m%d').to_i >= "0401".to_i
70
+
71
+ に変えてください。