Javaで2つの日付を比較するにはどうすればよいでしょうか?java日付時刻比較2
今私はどのように我々は、コンピュータの時間に比べて次の思い付くためにどの時間を見つけることができます
10.00のような時間の配列、12.00、2.00、4.00
がありますか?
私のコンピュータの時刻は3.15ですが、次に4.00を表示するにはどうすればいいですか?
Date date = new Date();
Javaで2つの日付を比較するにはどうすればよいでしょうか?java日付時刻比較2
今私はどのように我々は、コンピュータの時間に比べて次の思い付くためにどの時間を見つけることができます
10.00のような時間の配列、12.00、2.00、4.00
がありますか?
私のコンピュータの時刻は3.15ですが、次に4.00を表示するにはどうすればいいですか?
Date date = new Date();
java.util.DateはComparableインターフェイスを実装しています。それはあなたが非常に簡単にこのようなコードで2つのDateオブジェクトを比較することができることを意味:
if (date1.compareTo(date2) < 0)
{
System.out.println("date1 is before date2");
}
else if (date1.compareTo(date2) > 0)
{
System.out.println("date1 is after date2");
}
else
{
System.out.println("date1 is equal to date2");
}
私はJoda Timeを使用します。興味のある時間ごとにLocalTime
を作成し、現在の時刻を取得するにはnew LocalTime()
としてください。compareTo
またはisBefore
とisAfter
のいずれかと比較することができます。
組み込みのDate
/Calendar
クラスの代わりにJoda Timeを使用すると、このような種類のコードを読みやすくなります。
JodaTimeは、これらのような質問のための標準的な答えのようですが、私は時間がなかった(しゃれが意図していない)まだチェックしますジョダから、そうここに私のカレンダーの提案です:
public static String getNextHour() {
Calendar c = new GregorianCalendar();
int minsLeft = 60 - c.get(Calendar.MINUTE);
c.add(Calendar.MINUTE, minsLeft);
SimpleDateFormat sdf = new SimpleDateFormat("h:mm");
return sdf.format(c.getTime());
}
java.util.Date
クラスは、ニーズのために間違ったタイプです。そのクラスは、時刻がであり、時刻がであり、時間帯のみが必要です。 Javaの初期バージョンにバンドルされている古い日時クラスの中には、実際に時刻の値を表現するためののクラスはありません。 java.sql.Time
クラスはそのように振る舞いますが、ハックです。
java.timeフレームワークは、Java 8に内蔵以降れます。 Oracle Tutorialを参照してください。これらのクラスは、非常に成功したJoda-Timeライブラリに触発されました。 java.timeの機能の多くはback-ported to Jave 6 & 7であり、さらにadapted to Androidです。これらのクラスは、古い日時クラスに取って代わるものです。 a 広大な改善。
LocalTime
クラスは、日付がなく、タイムゾーンがない時間帯を表します。
List
などのソートされたコレクションを使用して値を整理します。
List<LocalTime> times = new ArrayList<>(4);
times.add(LocalTime.of(10 , 0);
times.add(LocalTime.of(12 , 0);
times.add(LocalTime.of(14 , 0);
times.add(LocalTime.of(16 , 0);
比較のサンプル時間を決めます。
LocalTime sample = LocalTime.of(15 , 15); // Quarter-hour past 3 in the afternoon.
または、現在の時刻を取得します。 Specify a time zoneは、あなたのJVMのcurrent default time zoneによって暗黙的により信頼性が高いです。ループList
ZoneId zoneId = ZoneId.of("America/Montreal");
LocalTime sample = LocalTime.now(zoneId);
はあなたのサンプル時間よりも一日の後半にある最初の項目を検索します。比較するには、isAfter
、isBefore
、またはequals
のメソッドを使用します。
LocalTime hit = null;
for (LocalTime time : times) {
if (time.isAfter(sample)) {
hit = time;
break; // Bail-out of this FOR loop.
}
}
// Test if 'hit' is still null, meaning no appropriate value found.
if (null == hit) { … } else (… }
引用ジョーダ:「日付とカレンダーの使用は苦痛と苦痛をもたらす」 – darioo