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

回答編集履歴

3

修正

2019/02/06 10:30

投稿

yambejp
yambejp

スコア117914

answer CHANGED
@@ -36,13 +36,14 @@
36
36
  ];
37
37
  window.addEventListener('DOMContentLoaded', function(){
38
38
  document.querySelector('#btn').addEventListener('click',function(){
39
+ var offset=30;
39
40
  var d0=document.querySelector('#dates').value;
40
41
  var t1=document.querySelector('#time_start').value;
41
42
  var t2=document.querySelector('#time_finish').value;
42
43
  var d1=new Date(d0+" "+t1);d1.setTime(d1.getTime()+1000*60*60*9);
43
44
  var d2=new Date(d0+" "+t2);d2.setTime(d2.getTime()+1000*60*60*9);
44
- var m=Array((d2.getTime()-d1.getTime())/1000/60/30).fill(null).map(function(x,y){
45
+ var m=Array((d2.getTime()-d1.getTime())/1000/60/offset+1).fill(null).map(function(x,y){
45
- return (new Date(d1.getTime()+1000*30*y)).toISOString().substr(0,16);
46
+ return (new Date(d1.getTime()+1000*60*offset*y)).toISOString().substr(0,16);
46
47
  });
47
48
  [].push.apply(BUSY,m);
48
49
  console.log(BUSY);

2

調整

2019/02/06 10:30

投稿

yambejp
yambejp

スコア117914

answer CHANGED
@@ -41,11 +41,10 @@
41
41
  var t2=document.querySelector('#time_finish').value;
42
42
  var d1=new Date(d0+" "+t1);d1.setTime(d1.getTime()+1000*60*60*9);
43
43
  var d2=new Date(d0+" "+t2);d2.setTime(d2.getTime()+1000*60*60*9);
44
- var count=0;
45
- while(d1<=d2){
44
+ var m=Array((d2.getTime()-d1.getTime())/1000/60/30).fill(null).map(function(x,y){
46
- BUSY.push(d1.toISOString().substr(0,16));
45
+ return (new Date(d1.getTime()+1000*30*y)).toISOString().substr(0,16);
46
+ });
47
- d1.setMinutes(d1.getMinutes()+30);
47
+ [].push.apply(BUSY,m);
48
- }
49
48
  console.log(BUSY);
50
49
  });
51
50
  });
@@ -54,4 +53,5 @@
54
53
  <input type="time" value="10:00" id="time_start"><br>
55
54
  <input type="time" value="19:00" id="time_finish"><br>
56
55
  <input type="button" value="go" id="btn">
56
+
57
57
  ```

1

tuiki

2019/02/06 10:27

投稿

yambejp
yambejp

スコア117914

answer CHANGED
@@ -6,4 +6,52 @@
6
6
  だけを見れば#datesと#time_startを組み合わせて
7
7
  BUSYにpushすればよいような気がします。
8
8
 
9
- その後のmon~sunをクリックして何かをしたい部分はどうするのでしょうか?
9
+ その後のmon~sunをクリックして何かをしたい部分はどうするのでしょうか?
10
+
11
+ # sample
12
+
13
+ 仮に
14
+ ```HTML
15
+ <input type="date" value="2019-01-01" id="dates">
16
+ <input type="time" value="10:00" id="time_start">
17
+ <input type="time" value="19:00" id="time_finish">
18
+ ```
19
+ というタグを利用して、
20
+ '2019-01-01T10:00'から30分お気に'2019-01-01T19:00'までのデータを作り
21
+ BUSYに追加すると言うことでよいでしょうか?
22
+
23
+ ```javascript
24
+ <script>
25
+ const BUSY = [
26
+ '2019-02-12T10:00',
27
+ '2019-02-12T10:30',
28
+ '2019-02-13T10:00',
29
+ '2019-02-02T10:00',
30
+ '2019-02-02T10:30',
31
+ '2019-02-03T10:00',
32
+ '2019-02-03T10:30',
33
+ '2019-02-09T10:00',
34
+ '2019-02-09T10:30',
35
+ '2019-02-09T23:30'
36
+ ];
37
+ window.addEventListener('DOMContentLoaded', function(){
38
+ document.querySelector('#btn').addEventListener('click',function(){
39
+ var d0=document.querySelector('#dates').value;
40
+ var t1=document.querySelector('#time_start').value;
41
+ var t2=document.querySelector('#time_finish').value;
42
+ var d1=new Date(d0+" "+t1);d1.setTime(d1.getTime()+1000*60*60*9);
43
+ var d2=new Date(d0+" "+t2);d2.setTime(d2.getTime()+1000*60*60*9);
44
+ var count=0;
45
+ while(d1<=d2){
46
+ BUSY.push(d1.toISOString().substr(0,16));
47
+ d1.setMinutes(d1.getMinutes()+30);
48
+ }
49
+ console.log(BUSY);
50
+ });
51
+ });
52
+ </script>
53
+ <input type="date" value="2019-01-01" id="dates"><br>
54
+ <input type="time" value="10:00" id="time_start"><br>
55
+ <input type="time" value="19:00" id="time_finish"><br>
56
+ <input type="button" value="go" id="btn">
57
+ ```