我有一个开始和结束的时间范围,这两个都是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
extends 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
对你的问题有点扭曲:制作一个包含 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)