2017-07-26 9 views
1

私は、2つの時間文字列Eg:t1 - 09:00とt2 - 15:00とDate引数の引数をとるメソッドを持っています。Javaを使用して2つの指定された時間文字列で与えられた日付からの時間を比較します

私は、指定された時間が渡された時間枠内であるかどうかにかかわらず、解決策に到達したいと思います。

おかげで、事前

public class CheckTime { 
    private boolean isOpen; 

    public boolean isValid(String time1, String time2, Date date) { 
     ----Logic goes here------ 
     return isOpen; 
    } 

    public static void main(String[] args) { 
     new CheckTime().isValid("09:00","15:00", 
          new Date(System.currentTimeMillis())); 
    } 
} 
+1

) 'LocalDateTime'オブジェクト) - あなたは実際に約2つの質問をしました - ' String'を時間値に変換し、その値を「Date」オブジェクト - これらのオブジェクトを実現する方法を理解することに焦点を当てています – MadProgrammer

+0

ほとんどのDateメソッドは、Oracleのドキュメントに従って[SE 7](https://docs.oracle.com/javase /7/docs/api/java/sql/Date.html)および[SE 8](https://docs.oracle.com/javase/8/docs/api/java/util/Date.html)を参照してください。そのため、代わりにCalendarとそのメソッドを使用することをお勧めします(https://docs.oracle.com/javase/8/docs/api/java/util/Date.html#getHours--)。 – hwdbc

+0

@hwdbc Java 8以降 - 新しいCalendar APIを使うことを強くお勧めします。なぜなら、 'カレンダー 'は...悪いことをした良い意図の良い例です。 – MadProgrammer

答えて

1

に私はどうしたら最初にすることは容易に比較することができ、いくつかの形式に値を取得することです。このことから

Date now = new Date(); 
LocalDateTime ldt = LocalDateTime.ofInstant(now.toInstant(), ZoneId.systemDefault()); 

String startValue = "09:00"; 
LocalTime startTime = LocalTime.parse(startValue, DateTimeFormatter.ISO_LOCAL_TIME); 

(あなたはまだJavaの以前のバージョンを使用している場合やJodaTimeまたは、そのようなAPI)私の心に、それは、Java 8のTime APIを使用しています、それは値を比較するだけの簡単な作業になり

System.out.println(ldt.toLocalTime().equals(startTime) || 
            ldt.toLocalTime().isAfter(startTime)); 

私は比較「前」を把握するためにあなたにそれを残しておきます。LocalTime` `までの時間値を変換し、私はに変換したいた(` Date`値と比較したものを使用し

+0

または '!ldt.toLocalTime()。isBefore(startTime)' – shmosel

+0

@shmoselこの例ではインクルーシブ・チェックをしていますが、 'startTime'を除いて' equals'を削除するだけで済むでしょうが、この例では「終了時刻」に対して追加の比較が必要です。 – MadProgrammer

+0

@shmosel疲れました - 私は 'startTime> now && endTime MadProgrammer

関連する問題