回答編集履歴

2

step属性について追記

2017/10/11 00:41

投稿

miyahan
miyahan

スコア3095

test CHANGED
@@ -43,3 +43,15 @@
43
43
  </html>
44
44
 
45
45
  ```
46
+
47
+
48
+
49
+ なおデフォルトでは入力は60秒単位、つまり分までしか取り扱いません。もし秒まで取り扱いたい場合は `step="1"` 属性を追加し、分解能を1秒に変更してください。
50
+
51
+
52
+
53
+ ```php
54
+
55
+ <input type="datetime-local" value="<?= $date->format('Y-m-d\TH:i:s') ?>" step="1">
56
+
57
+ ```

1

回答をブラッシュアップ

2017/10/11 00:40

投稿

miyahan
miyahan

スコア3095

test CHANGED
@@ -1,4 +1,4 @@
1
- datetime-local の値は ISO 8601 に準拠していなければなりません。つまり `YYYY-MM-DDThh:mm:ss` です。
1
+ すでにお分かりの通り datetime-local の値は ISO 8601 に準拠していなければなりません。
2
2
 
3
3
 
4
4
 
@@ -6,7 +6,19 @@
6
6
 
7
7
 
8
8
 
9
+ つまり、date() および DateTime::format() に渡す書式指定文字は `Y-m-d\TH:i` となります。
10
+
11
+
12
+
13
+ また input フォームの初期値は value 属性にセットすることで反映されます。
14
+
15
+
16
+
17
+ [<input type="datetime-local">-HTML5タグリファレンス](http://www.htmq.com/html5/input_type_datetime-local.shtml)
18
+
19
+
20
+
9
- サンプルコード:
21
+ まとめるとこんな感じのコードになります
10
22
 
11
23
 
12
24
 
@@ -14,7 +26,7 @@
14
26
 
15
27
  <?php
16
28
 
17
- $sql_date = '2017-10-11 09:20:30';
29
+ $date = new DateTime('2017-10-11 09:20:30');
18
30
 
19
31
  ?>
20
32
 
@@ -24,11 +36,7 @@
24
36
 
25
37
  <body>
26
38
 
27
- <form>
28
-
29
- <input type="datetime-local" value="<?= date('Y-m-d\TH:i', strtotime($sql_date)) ?>">
39
+ <form><input type="datetime-local" value="<?= $date->format('Y-m-d\TH:i') ?>"></form>
30
-
31
- </form>
32
40
 
33
41
  </body>
34
42