開始と終了の時間範囲があり、どちらもjava.sql.Time
オブジェクトです。JComboBox に、それらの間の時間のリストを 15 分間隔で入力したいと考えています。たとえば、開始が 11:00 で終了が 12:00 の場合、JComboBox のオプションを 11:00、11:15、11:30、11:45、12:00 にします。
これを行う最も効率的な方法は何ですか?
開始と終了の時間範囲があり、どちらもjava.sql.Time
オブジェクトです。JComboBox に、それらの間の時間のリストを 15 分間隔で入力したいと考えています。たとえば、開始が 11:00 で終了が 12:00 の場合、JComboBox のオプションを 11:00、11:15、11:30、11:45、12:00 にします。
これを行う最も効率的な方法は何ですか?
java.sql.Time
から拡張されjava.util.Date
ているため、 を受け入れる他のクラス内で使用できますDate
。
ここでは、 aCalendar
を使用して、目的の終了時刻に達するまで分フィールドを 15 分間隔で単純に変更しました...
List<java.sql.Time> intervals = new ArrayList<>(25);
// These constructors are deprecated and are used only for example
java.sql.Time startTime = new java.sql.Time(11, 0, 0);
java.sql.Time endTime = new java.sql.Time(12, 0, 0);
intervals.add(startTime);
Calendar cal = Calendar.getInstance();
cal.setTime(startTime);
while (cal.getTime().before(endTime)) {
cal.add(Calendar.MINUTE, 15);
intervals.add(new java.sql.Time(cal.getTimeInMillis()));
}
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
for (java.sql.Time time : intervals) {
System.out.println(sdf.format(time));
}
これは出力されます
11:00
11:15
11:30
11:45
12:00
あなたの質問に少しひねりました:2つの整数の間の5つの間隔ですべての整数を含むリストを作成します:
まず、いくつの数があるかを知り、それに応じてリストを割り当てることができます: (すべて疑似コードで)
// assume begin and end is at the boundary of interval.
int noOfElement = (begin - end)/5 + 1;
List<Integer> resultList = new ArrayList<>(noOfElement);
次に、リストに値を入力します。
for (int i = begin; i <= end ; i += 5) {
resultList.add(i);
}
結果リストには、必要なすべての値が含まれます。
この例を理解できれば、日付を処理する同様のロジックを作成する特別なことは何もありません
あなたへのいくつかのヒント: を調べてDate#toTime()
、Date(long Date)