回答編集履歴

3

コード修正(preg_match1回目に失敗したら、2回目を実施)

2017/02/17 06:39

投稿

退会済みユーザー
test CHANGED
@@ -12,27 +12,35 @@
12
12
 
13
13
 
14
14
 
15
- if( Count( $data ) == 4 ) {
15
+ if( empty($data) ) {
16
16
 
17
- // 先頭0埋めでYYYYMMDD形式の日付文字列に変換する
17
+ preg_match( "/([0-9]*)年([0-9]*)月/", $date_str, $data );
18
18
 
19
- $outStr = sprintf( "%04.4d/%02.2d/%02.2d", $data[1], $data[2], $data[3] );
19
+ }
20
20
 
21
- }
22
21
 
23
- else if( Count( $data ) == 3 ) {
24
22
 
25
- // 先頭0埋めでYYYYMM形式の日付文字列に変換する
23
+ if( Count( $data ) == 4 ) {
26
24
 
27
- $outStr = sprintf( "%04.4d/%02.2d/01", $data[1], $data[2] );
25
+ // 先頭0埋めでYYYYMMDD形式の日付文字列に変換する
28
26
 
29
- }
27
+ $outStr = sprintf( "%04.4d/%02.2d/%02.2d", $data[1], $data[2], $data[3] );
30
28
 
31
- else {
29
+ }
32
30
 
33
- $outStr = '';
31
+ else if( Count( $data ) == 3 ) {
34
32
 
33
+ // 先頭0埋めでYYYYMM形式の日付文字列に変換する
34
+
35
+ $outStr = sprintf( "%04.4d/%02.2d/01", $data[1], $data[2] );
36
+
35
- }
37
+ }
38
+
39
+ else {
40
+
41
+ $outStr = '';
42
+
43
+ }
36
44
 
37
45
 
38
46
 
@@ -58,43 +66,43 @@
58
66
 
59
67
  if( $normalize_time != false ) : ?>
60
68
 
61
- <p class="year">
69
+ <p class="year">
62
70
 
63
- <?php echo date_i18n('Y', $normalize_time); ?>
71
+ <?php echo date_i18n('Y', $normalize_time); ?>
64
72
 
65
-
73
+
66
74
 
67
- </p>
75
+ </p>
68
76
 
69
77
 
70
78
 
71
- <p class="month">
79
+ <p class="month">
72
80
 
73
- <?php echo date_i18n('m', $normalize_time); ?>
81
+ <?php echo date_i18n('m', $normalize_time); ?>
74
82
 
75
-
83
+
76
84
 
77
- </p>
85
+ </p>
78
86
 
79
87
 
80
88
 
81
- // $event_date1に'日'という文字が含まれているか
89
+ <?php // $event_date1に'日'という文字が含まれているか ?>
82
90
 
83
- <?php if(strpos($event_date1,'日') !== false) : ?>
91
+ <?php if(strpos($event_date1,'日') !== false) : ?>
84
92
 
85
- <p class="date">
93
+ <p class="date">
86
94
 
87
- <?php echo date_i18n('d', $normalize_time); ?>
95
+ <?php echo date_i18n('d', $normalize_time); ?>
88
96
 
89
-
97
+
90
98
 
91
- </p>
99
+ </p>
92
100
 
93
- <?php endif; ?>
101
+ <?php endif; ?>
94
102
 
95
103
  <?php else : ?>
96
104
 
97
- <p>日付の形式が無効です</p>
105
+ <p>日付の形式が無効です</p>
98
106
 
99
107
  <?php endif; ?>
100
108
 

2

コード修正(年月形式をstrtotime\(\)に渡すとエラーになるので、日付を付加)

2017/02/17 06:39

投稿

退会済みユーザー
test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  // 先頭0埋めでYYYYMM形式の日付文字列に変換する
26
26
 
27
- $outStr = sprintf( "%04.4d/%02.2d", $data[1], $data[2] );
27
+ $outStr = sprintf( "%04.4d/%02.2d/01", $data[1], $data[2] );
28
28
 
29
29
  }
30
30
 

1

コードの誤記訂正(if文のカッコ開くが多かった)

2017/02/16 11:31

投稿

退会済みユーザー
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- if( ( Count( $data ) == 4 ) {
15
+ if( Count( $data ) == 4 ) {
16
16
 
17
17
  // 先頭0埋めでYYYYMMDD形式の日付文字列に変換する
18
18
 
@@ -20,7 +20,7 @@
20
20
 
21
21
  }
22
22
 
23
- else if( ( Count( $data ) == 3 ) {
23
+ else if( Count( $data ) == 3 ) {
24
24
 
25
25
  // 先頭0埋めでYYYYMM形式の日付文字列に変換する
26
26