1

24 時間で「02:00」のような文字列形式の時間があり、「07:00」と「15:00」など、他の 2 つの時間の間で確認したいのですが、どうすればこれを確認できますか?時間は文字列形式ですか?

次のコードを使用します。

SimpleDateFormat simpDate = new SimpleDateFormat("kk:mm");
String s2=simpDate.format(date);
JLabel1.setText(s2);

次に、その文字列 s2 が「7:00」と「15:00」の間にあるかどうかを確認し、値を JLabel2 という名前の別の JLabel に「First Shift」として設定します。

4

2 に答える 2

2

SimpleDateFormatを に変換するにはString、を使用しDateます。次に、日付を一緒に比較できます。

SimpleDateFormatの詳細については、こちらをご覧ください。

于 2012-07-12T10:12:04.013 に答える
2

Dateまず、文字列をオブジェクト インスタンスに解析する必要があります。DateFormat派生クラスを使用してこれを行うことができます(つまりSimpleDateFormat)。

次に、両方の日付のミリ秒表現 ( で取得) を使用して比較を行うか、またはgetTime()を使用して単純に比較できます。after(Date date)before(Date date)

より複雑な操作が必要な場合は、Calendarクラスを使用する必要があります。

さらに、プロジェクトが日付でうまく機能する場合は、Joda Timeを使用することをお勧めします

編集(コメントへの応答):

クラスを使用Calendarすると、このようになります。まず、7:00 の日付のカレンダー インスタンスが必要です。

Calendar cal1 = Calendar.getInstance();
cal1.set(Calendar.DATE, 12);       // The day of month you are working with
cal1.set(Calendar.MONTH, 7);       // The month of the year
cal1.set(Calendar.YEAR, 2012);     // The year
cal1.set(Calendar.HOUR_OF_DAY, 7); // Hour in 24-hours fashion
cal1.set(Calendar.MINUTE, 0);      // self-explanatory
cal1.set(Calendar.SECOND, 0);

Date shiftStart = cal1.getTime();

次に、シフトの終わりに同じことを行います。

Calendar cal2 = Calendar.getInstance();
cal2.set( ... );       // Repeat almost every field from previous snippet
cal2.set(Calendar.HOUR_OF_DAY, 15); // Hour in 24-hours fashion

Date shiftEnd = cal2.getTime();

次に、比較したい日付がそれらの間にあることを確認する必要があります。

Date myDate = ...   // the date you want to compare
boolean checkShift = myDate.after(shiftStart) && myDate.before(shiftEnd);

とにかく、すでに述べたように、プロジェクトで日付を頻繁に使用する場合は、Joda Time を使用します。これにより、日付の処理が大幅に容易になります。

于 2012-07-12T10:22:28.643 に答える