質問するログイン新規登録

質問編集履歴

1

解決コードを追加しました。

2017/02/17 07:44

投稿

jester
jester

スコア11

title CHANGED
File without changes
body CHANGED
@@ -53,4 +53,60 @@
53
53
  しかし、テキストボックスに「●●●●年●●月」(年月のみ)で入力した場合、「1970年01月01日」と表示されてしまいます。
54
54
  年月日、年月のどちらにも対応して、日付をバラして取得する方法を教えていただきたいです。
55
55
 
56
- どうぞよろしくお願いいたします。
56
+ どうぞよろしくお願いいたします。
57
+
58
+
59
+ 【追記】
60
+ 無事解決しましたので、最終コードを記載させていただきます。
61
+ ご回答いただき、ありがとうございました。
62
+
63
+ functions.phpに以下を記入しました。
64
+ ```ここに言語を入力
65
+ <?php
66
+ //カスタムフィールドの日付のフォーマット変更
67
+ function normalizeTime($date_str) {
68
+ // 年月日の各パーツを分割する
69
+ preg_match( "/([0-9]*)年([0-9]*)月([0-9]*)日/", $date_str, $data );
70
+ if( empty($data) ) {
71
+ preg_match( "/([0-9]*)年([0-9]*)月/", $date_str, $data );
72
+ }
73
+ if( Count( $data ) == 4 ) {
74
+ // 先頭0埋めでYYYYMMDD形式の日付文字列に変換する
75
+ $outStr = sprintf( "%04.4d/%02.2d/%02.2d", $data[1], $data[2], $data[3] );
76
+ }
77
+ else if( Count( $data ) == 3 ) {
78
+ // 先頭0埋めでYYYYMM形式の日付文字列に変換する
79
+ $outStr = sprintf( "%04.4d/%02.2d/01", $data[1], $data[2] );
80
+ }
81
+ else {
82
+ $outStr = '';
83
+ }
84
+ return strtotime($outStr);
85
+ }
86
+ ?>
87
+ ```
88
+ htmlには、以下のように記入しています。
89
+ ※曜日の取得も追加しています。
90
+ ```ここに言語を入力
91
+ <?php $event_date1 = post_custom('event_date1');
92
+ $normalize_time = normalizeTime($event_date1);
93
+ if( $normalize_time != false ) : ?>
94
+ <p class="year"><?php echo date_i18n('Y', $normalize_time); ?>年</p>
95
+ <p class="month"><?php echo date_i18n('m', $normalize_time); ?>月</p>
96
+
97
+ <?php //テキストに日を含む場合
98
+ if(strpos($event_date1,'日') !== false) : ?>
99
+ <p class="date"><?php echo date_i18n('d', $normalize_time); ?>日</p>
100
+ <p class="week">(
101
+ <?php $date = date_i18n('Y/m/d', $normalize_time);
102
+ $week = array("日", "月", "火", "水", "木", "金", "土");
103
+ $time = strtotime($date);
104
+ $w = date("w", $time);
105
+ echo $week[$w]; ?>
106
+ )</p>
107
+ <?php else : ?><?php endif; ?>
108
+
109
+ <?php else : ?>
110
+ <p>日付の形式が無効です</p>
111
+ <?php endif; ?>
112
+ ```