質問編集履歴

5

微調整

2018/08/30 16:47

投稿

blue_1997
blue_1997

スコア9

test CHANGED
File without changes
test CHANGED
@@ -60,15 +60,27 @@
60
60
 
61
61
  end
62
62
 
63
+
64
+
63
- array2 << year + "/" + month + "/" + day
65
+ d = Time.strptime(year + "/" + month + "/" + day, "%Y/%m/%d").strftime("%Y/%m/%d")
66
+
67
+ array2 << d
64
68
 
65
69
  end
66
70
 
71
+ #=> ["2018/12/28",
72
+
73
+ "2018/12/30",
74
+
75
+ "2018/12/31",
76
+
77
+ "2019/01/01",
78
+
79
+ "2019/01/02",
80
+
81
+ "2019/01/04"]
67
82
 
68
83
 
69
- pp array2
70
-
71
- #=> ["2018/12/28", "2018/12/30", "2018/12/31", "2019/1/1", "2019/1/2", "2019/1/4"]
72
84
 
73
85
  ```
74
86
 

4

一応できたのですが、どうも強引な感じがして、もっと上手い書き方を知りたいです。

2018/08/30 16:47

投稿

blue_1997
blue_1997

スコア9

test CHANGED
File without changes
test CHANGED
@@ -20,9 +20,9 @@
20
20
 
21
21
 
22
22
 
23
- this_year = Time.now.strftime("%Y")
23
+ this_year = Time.now.strftime("%Y") #=> "2018"
24
24
 
25
- this_month = Time.now.strftime("%m")
25
+ this_month = Time.now.strftime("%m") #=> "08"
26
26
 
27
27
  year = ""
28
28
 
@@ -36,13 +36,15 @@
36
36
 
37
37
  if elm.match(/^(\d{1,2})/(\d{1,2})$/)
38
38
 
39
- month = $1
39
+ month = $1 #=> ex. "12", "1"
40
40
 
41
41
  day = $2
42
42
 
43
- if "#1月以降だったら"
44
43
 
44
+
45
+ if month.to_i <= this_month.to_i #=> ex. 12 <= 8, 1 <= 8
46
+
45
- year = (this_year.to_i + 1).to_s
47
+ year = (this_year.to_i + 1).to_s #=> "2019"
46
48
 
47
49
  else
48
50
 
@@ -62,8 +64,14 @@
62
64
 
63
65
  end
64
66
 
67
+
68
+
69
+ pp array2
70
+
71
+ #=> ["2018/12/28", "2018/12/30", "2018/12/31", "2019/1/1", "2019/1/2", "2019/1/4"]
72
+
65
73
  ```
66
74
 
67
75
 
68
76
 
69
- 1月以降だたらという条件がわかませんした
77
+ 一応できたのですが、どうも強引な感じがして、もっと上手書き方を知たい

3

1月以降の場合の、.to_s 追加

2018/08/30 16:37

投稿

blue_1997
blue_1997

スコア9

test CHANGED
File without changes
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  if "#1月以降だったら"
44
44
 
45
- year = this_year.to_i + 1
45
+ year = (this_year.to_i + 1).to_s
46
46
 
47
47
  else
48
48
 

2

array1をコードに転載

2018/08/30 16:19

投稿

blue_1997
blue_1997

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,14 +1,10 @@
1
1
  Rails5で、下記 array1 を元に、array2 を生成したいです。シンプルな方法を教えて下さい。
2
-
3
-
4
2
 
5
3
 
6
4
 
7
5
  ```ruby
8
6
 
9
7
  array1 = ["12/28", "30", "31", "1/1", "2", "4"]
10
-
11
-
12
8
 
13
9
  array2 = ["2018/12/28", "2018/12/30", "2018/12/31", "2019/01/01", "2019/01/02", "2019/01/04"]
14
10
 
@@ -19,6 +15,10 @@
19
15
 
20
16
 
21
17
  ```ruby
18
+
19
+ array1 = ["12/28", "30", "31", "1/1", "2", "4"]
20
+
21
+
22
22
 
23
23
  this_year = Time.now.strftime("%Y")
24
24
 

1

わかる範囲でコードを記載しました。

2018/08/30 16:15

投稿

blue_1997
blue_1997

スコア9

test CHANGED
File without changes
test CHANGED
@@ -18,4 +18,52 @@
18
18
 
19
19
 
20
20
 
21
+ ```ruby
22
+
23
+ this_year = Time.now.strftime("%Y")
24
+
25
+ this_month = Time.now.strftime("%m")
26
+
27
+ year = ""
28
+
29
+ month = ""
30
+
31
+
32
+
33
+ array2 = []
34
+
35
+ array1.each do |elm|
36
+
37
+ if elm.match(/^(\d{1,2})/(\d{1,2})$/)
38
+
39
+ month = $1
40
+
41
+ day = $2
42
+
43
+ if "#1月以降だったら"
44
+
45
+ year = this_year.to_i + 1
46
+
47
+ else
48
+
49
+ year = this_year
50
+
51
+ end
52
+
53
+
54
+
55
+ else
56
+
57
+ day = elm
58
+
59
+ end
60
+
61
+ array2 << year + "/" + month + "/" + day
62
+
63
+ end
64
+
65
+ ```
66
+
67
+
68
+
21
- 何卒、よろくお願いいします m(_ _)m
69
+ 1月以降だったらという条件がわかりませんでした