2

我有一个开始和结束的时间范围,这两个都是java.sql.Time对象。我想用它们之间的时间列表填充一个 JComboBox,间隔为 15 分钟。例如,如果开始是 11:00,结束是 12:00,我希望 JComboBox 中的选项是 11:00、11:15、11:30、11:45 和 12:00。

最有效的方法是什么?

4

2 回答 2

4

java.sql.Timeextends from java.util.Date,因此您可以在其他接受Date.

在这里,我使用 aCalendar以 15 分钟的间隔简单地修改 miniute 字段,直到达到所需的结束时间......

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
于 2013-03-15T03:28:26.323 回答
0

对你的问题有点扭曲:制作一个包含 5 间隔内所有整数的列表,介于 2 个整数之间:

首先,我们可以知道会有多少个数字,并相应地分配列表:(全部在伪代码中)

// 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);
}

resultList 然后将包含您想要的所有值。

如果你能理解这个例子,那么处理 Date 的类似逻辑并没有什么特别之处

给您的更多提示:查看Date#toTime(), 和Date(long Date)

于 2013-03-15T03:21:14.210 回答