- ベストアンサー
時間帯判定をする。
質問です。 開始時刻 09:00:00 終了時刻 22:00:00 という前提で、 現在時刻を String nowtime = DateFormat.getTimeInstance(DateFormat.MEDIUM).format(now); //hh:mm:ssという形式で取得し、 現在時刻が9:00:00から22:00:00 までならば、有効時間帯で、それ以外は、無効としようとしています。 if(9:00:00~22:00:00){ System.out.println("有効時間帯"); return true; } return false; そこで、if文内の判定方法なのですが、 良い方法がありましたら、 お教え願えませんでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> if(9:00:00~22:00:00){ if (nowtime.compareTo("09:00:00") >= 0 && nowtime.compareTo("22:00:00") <= 0) { かな。
その他の回答 (2)
- sasadora
- ベストアンサー率68% (59/86)
CalendarクラスのAPIリファレンスを見てください。 (DateクラスのAPIリファレンスにも、Calendarを使うように書いてますよね?) サンプル: ---------- Calendar cal = Calendar.getInstance(); Date now = cal.getTime(); cal.set(Calendar.HOUR_OF_DAY, 9); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); Date start = cal.getTime(); cal.set(Calendar.HOUR_OF_DAY, 22); Date end = cal.getTime(); System.out.println("now :" + now); System.out.println("start:" + start); System.out.println("end :" + end); //nowはstartより後で、endより前かどうかをチェック System.out.println("start < now < end: " + (now.after(start) && now.before(end))); 正直、文字列比較の方が楽ですね。。。
お礼
今回は、詳しくお教えいただきました。ありがとうございました。
- sasadora
- ベストアンサー率68% (59/86)
文字列で時間の大小比較をせずに、DateやCalendarオブジェクトで 比較したらよいと思います。 例: 現在日付の09:00:00のDateオブジェクトを取得 チェックしたい日付時刻(現在時刻?)のDateオブジェクトを取得 現在日付の22:00:00のDateオブジェクトを取得 この3つについて、Date#after, Date#beforeメソッドを使えば、 日付の前後関係が分かる。 また、文字列で比較したいとしたら、"9:00:00"ではなく、"09:00:00" といった形式で作成して、String#compareToで辞書的に比較しても できると思います。
補足
すみません。JavaのAPIを見たのですが,良くわかりません。 具体的に >現在日付の09:00:00のDateオブジェクトを取得 >チェックしたい日付時刻(現在時刻?)のDateオブジェクトを取得 >現在日付の22:00:00のDateオブジェクトを取得 というのは、どうやるのでしょうか? すみませんが、おしえてください。
お礼
ありがとうございます。 今回は、a-kumaさんの案を利用させていただくことにします。 ありがとうございました。