- ベストアンサー
JAVAで時刻に対して簡単な四則演算をしたい
初歩の質問ですが、 現時刻の時間や分に+1をしたりしたいのですが、やり方がわかりません。 月+1はできました。 それと、if文が無効になるのはなぜでしょうか。 しょうむない質問ですが、教えてください。 <script language="JavaScript"> <!-- date = new Date(); wday = new Array("日", "月", "火", "水", "木", "金", "土"); mon = date.getMonth() + 1; document.write(date.getFullYear() + "年" + mon + "月" + date.getDate() + "日(" + wday[date.getDay()] + ") "); // --> <!-- time = new Date(); hour = time.getHours(); min = time.getMinutes(); if (min < 10) { min = "0" + min; } document.write(time.getHours() + "時" + time.getMinutes() + "分" ); // --> </script>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Dateオブジェクトを使って時刻を+1したりするのは、getHours()やgetMinutes()を使って時刻を取り出し+1などしてsetHours()やsetMinutes()を使って設定します。 例えば、時刻を1時間進めるには、 time = new Date(); time.setHours(time.getHours()+1); とします。 ifがうまく働かないのは、 minが数字であって、"0"という文字列に+しようとしているからだと思います。 文字列と連結するなら "0" + min.toString(); の様にして下さい。 (これは、timeの中の分を変更するものではありません)
その他の回答 (1)
- anmochi
- ベストアンサー率65% (1332/2045)
Date()のコンストラクタは、1970年1月1日0時0分0秒からの経過時間(単位ミリ秒)を引数に取るオーバーライドがある。なので、一旦getTimeメソッドでミリ秒に直してから足し引きしてもう一度newしてやると良い。ちなみに、日付の掛け算と割り算っていうのは意味が無いやんな。 具体的にはこんな感じ。 d = new Date(0) これは1970年1月1日0時0分0秒のDateインスタンスになる d = new Date(); d = new Date(d.getTime() + 60*1000); // 1分足す d = new Date(d.getTime() + 60*60*1000); // 1時間足す d = new Date(d.getTime() + 24*60*60*1000); // 1日足す 数値をマイナスする事で引き算も可能だ。 > if (min < 10) { min = "0" + min; } > document.write(time.getHours() + "時" + time.getMinutes() + "分" ); もし"10時09分"と表示されないという事であれば、せっかくminを2桁ゼロ埋めにしたのにtime.getMinutes()で表示してるからだと思うよ。
お礼
おお!難しい解説!!(∩゜∀゜) ありがとうございました!
お礼
おお!即解決です!!(∩゜∀゜) ありがとうございました!