回答編集履歴

1

月に関する仕様齟齬を反映 + 微調整

2018/09/01 03:07

投稿

takumiabe
takumiabe

スコア661

test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- day, month, year = *elm.split('/').reverse
33
+ day, month, year = *elm.split('/').map(&:to_i).reverse
34
34
 
35
35
  month ||= today.month
36
36
 
@@ -38,7 +38,7 @@
38
38
 
39
39
  d = Date.new(year, month, day)
40
40
 
41
- d = d.next_year if elm_date < today # 過去の日付になったら翌年
41
+ d = d.next_year if d < today # 過去の日付になったら翌年
42
42
 
43
43
  ```
44
44
 
@@ -55,3 +55,53 @@
55
55
 
56
56
 
57
57
  あたりがポイントかと思います。
58
+
59
+
60
+
61
+ ---
62
+
63
+
64
+
65
+ 条件を誤読していたので修正します。
66
+
67
+ 前に設定された情報の中に「月」等があれば、継続してそれを用いる、ということなので、
68
+
69
+
70
+
71
+
72
+
73
+ ```rb
74
+
75
+ today = Date.today
76
+
77
+ prev_month = nil
78
+
79
+
80
+
81
+ array1.each do |elem|
82
+
83
+ day, month, year = *elem.split('/').map(&:to_i).reverse
84
+
85
+ month ||= prev_month || raise("一度もmonthが指定されなかった")
86
+
87
+ year ||= today.year
88
+
89
+
90
+
91
+ d = Date.new(year, month, day)
92
+
93
+ d = d.next_year if d < today # 過去の日付になったら翌年
94
+
95
+
96
+
97
+ prev_month = d.month # 次のelemの処理のために保持
98
+
99
+ array2 << d
100
+
101
+ end
102
+
103
+ ```
104
+
105
+
106
+
107
+ というところかと思います。