回答編集履歴
1
月に関する仕様齟齬を反映 + 微調整
answer
CHANGED
@@ -14,11 +14,11 @@
|
|
14
14
|
|
15
15
|
...
|
16
16
|
|
17
|
-
day, month, year = *elm.split('/').reverse
|
17
|
+
day, month, year = *elm.split('/').map(&:to_i).reverse
|
18
18
|
month ||= today.month
|
19
19
|
year ||= today.year
|
20
20
|
d = Date.new(year, month, day)
|
21
|
-
d = d.next_year if
|
21
|
+
d = d.next_year if d < today # 過去の日付になったら翌年
|
22
22
|
```
|
23
23
|
|
24
24
|
とすれば、目的の日付が1つ得られると思います。
|
@@ -26,4 +26,29 @@
|
|
26
26
|
- 分割代入を上手く使うとデータの分解が上手にできることが多いです
|
27
27
|
- デフォルト値を取り扱う時は、`||=` が活きます。
|
28
28
|
|
29
|
-
あたりがポイントかと思います。
|
29
|
+
あたりがポイントかと思います。
|
30
|
+
|
31
|
+
---
|
32
|
+
|
33
|
+
条件を誤読していたので修正します。
|
34
|
+
前に設定された情報の中に「月」等があれば、継続してそれを用いる、ということなので、
|
35
|
+
|
36
|
+
|
37
|
+
```rb
|
38
|
+
today = Date.today
|
39
|
+
prev_month = nil
|
40
|
+
|
41
|
+
array1.each do |elem|
|
42
|
+
day, month, year = *elem.split('/').map(&:to_i).reverse
|
43
|
+
month ||= prev_month || raise("一度もmonthが指定されなかった")
|
44
|
+
year ||= today.year
|
45
|
+
|
46
|
+
d = Date.new(year, month, day)
|
47
|
+
d = d.next_year if d < today # 過去の日付になったら翌年
|
48
|
+
|
49
|
+
prev_month = d.month # 次のelemの処理のために保持
|
50
|
+
array2 << d
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
というところかと思います。
|