• ベストアンサー

時間帯判定をする。

質問です。 開始時刻 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文内の判定方法なのですが、  良い方法がありましたら、  お教え願えませんでしょうか?  よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

> if(9:00:00~22:00:00){ if (nowtime.compareTo("09:00:00") >= 0 && nowtime.compareTo("22:00:00") <= 0) { かな。

takomaru
質問者

お礼

ありがとうございます。 今回は、a-kumaさんの案を利用させていただくことにします。 ありがとうございました。

その他の回答 (2)

  • sasadora
  • ベストアンサー率68% (59/86)
回答No.3

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))); 正直、文字列比較の方が楽ですね。。。

takomaru
質問者

お礼

今回は、詳しくお教えいただきました。ありがとうございました。

  • sasadora
  • ベストアンサー率68% (59/86)
回答No.2

文字列で時間の大小比較をせずに、DateやCalendarオブジェクトで 比較したらよいと思います。 例: 現在日付の09:00:00のDateオブジェクトを取得 チェックしたい日付時刻(現在時刻?)のDateオブジェクトを取得 現在日付の22:00:00のDateオブジェクトを取得 この3つについて、Date#after, Date#beforeメソッドを使えば、 日付の前後関係が分かる。 また、文字列で比較したいとしたら、"9:00:00"ではなく、"09:00:00" といった形式で作成して、String#compareToで辞書的に比較しても できると思います。

takomaru
質問者

補足

すみません。JavaのAPIを見たのですが,良くわかりません。 具体的に  >現在日付の09:00:00のDateオブジェクトを取得 >チェックしたい日付時刻(現在時刻?)のDateオブジェクトを取得 >現在日付の22:00:00のDateオブジェクトを取得 というのは、どうやるのでしょうか? すみませんが、おしえてください。

関連するQ&A