【发布时间】:2018-06-28 06:38:06
【问题描述】:
我正在尝试创建一个日程安排,我只能获取输入的时间和日程名称。
我想把日程安排在List,但如果没有其他日程安排,如果没有其他早期时间,列表应该从6:00 AM开始添加一个新的空日程安排。
我有ObservableList<DataClass>,它包含LocalTime 和一些String。
示例 1: 假设列表包含 3 个项目:
[04:00 AM] [Some String]
[06:30 AM] [Some String]
[05:00 PM] [Some String]
我想将列表中缺少的时间从4:00 AM 添加到5:00 PM,所以列表将是:
[04:00 AM] [Some String]
[05:00 AM] [Some String]
[06:30 AM] [Some String]
[07:00 AM] [Some String]
[08:00 AM] [Some String]
[09:00 AM] [Some String]
[10:00 AM] [Some String]
[11:00 AM] [Some String]
[12:00 PM] [Some String]
[01:00 PM] [Some String]
[02:00 PM] [Some String]
[03:00 PM] [Some String]
[04:00 PM] [Some String]
[05:00 PM] [Some String]
示例 2: 假设列表包含 2 个项目:
[08:30 AM] [Some String]
[02:00 PM] [Some String]
我想将列表中缺少的时间从6:00 AM添加到5:00 PM,所以列表将是:
[06:00 AM] [Some String]
[07:00 AM] [Some String]
[08:00 AM] [Some String]
[09:00 AM] [Some String]
[10:00 AM] [Some String]
[11:00 AM] [Some String]
[12:00 PM] [Some String]
[01:00 PM] [Some String]
[02:00 PM] [Some String]
[03:00 PM] [Some String]
[04:00 PM] [Some String]
[05:00 PM] [Some String]
示例 3: 假设列表包含 1 个项目:
[08:00 PM] [Some String]
我想将列表中缺少的时间从6:00 AM添加到8:00 PM,这样列表就可以了。
[06:00 AM] [Some String]
[07:00 AM] [Some String]
[08:00 AM] [Some String]
[09:00 AM] [Some String]
[10:00 AM] [Some String]
[11:00 AM] [Some String]
[12:00 PM] [Some String]
[01:00 PM] [Some String]
[02:00 PM] [Some String]
[03:00 PM] [Some String]
[04:00 PM] [Some String]
[05:00 PM] [Some String]
[06:00 PM] [Some String]
[07:00 PM] [Some String]
[08:00 PM] [Some String]
如果没有其他更早的时间,时间应该从06:00 AM开始,否则时间将从那个早的时间开始。
如果没有其他时间,时间应该在5:00 PM结束,否则时间将在那个特定时间结束,我只想添加HOUR,比如increment小时所以不应该有6:30 , 5:30 除非是手动输入的。
我正在考虑以下逻辑,但由于想法被锁定,我无法继续。
根据从上午到下午的时间对列表进行排序以获得第一次
检查第一个数据的时间是否等于或小于上午 6:00
如果为真,则从那个时间开始并继续添加缺失的 直到下午 5:00 或最后一次到达的时间。
如果为假,则 从早上 6:00 开始并继续添加缺失的时间直到 5:00 下午或最后一次到达。
下面的代码是我目前所拥有的,令人费解。
private void fillTheList(){
ObservableList<DataClass> data = FXCollections.observableArrayList();
Comparator<DataClass> comparator = Comparator.comparing(DataClass::getLocalTime);
data.add(new DataClass(convertTime("05:00 PM"), "Sample Content"));
data.add(new DataClass(convertTime("06:30 AM"), "Sample Content"));
FXCollections.sort(data,comparator); //Sort the list from AM to PM
for (DataClass list : data){
if(list.getLocalTime().isBefore(LocalTime.of(6,0))){
//The time is less than 6:00 AM then it should start here and Add the missing time but I don't know what to do next...
}else{
//the time is not less than 6:00 AM... I don't know what to do next..
}
}
FXCollections.sort(data,comparator); //Sort the list from AM to PM again
}
private LocalTime convertTime(String timeString){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm a");
return LocalTime.parse(timeString, formatter);
}
PS:我实际上不确定我要问什么,所以如有必要,请随时提出修改建议。
更新:DataClass.class
public class DataClass {
private LocalTime localTime;
private String content;
public DataClass(LocalTime localTime, String content){
this.localTime = localTime;
this.content = content;
}
public LocalTime getLocalTime(){
return localTime;
}
public String getContent(){
return content;
}
}
【问题讨论】:
-
通过用
.... to替换行,您已经消除了我们需要了解您要完成的任务的关键信息。生成“缺失”时间的具体规则是什么?什么是间隔?它是恒定的吗?这个问题非常不清楚。 -
PS: I'm not actually sure what I'm going to ask so feel free to suggest an edit if necessary.- 如果您不知道自己需要什么,我们很难知道您需要什么。 -
@Jai - 我知道我想要实现的目标,但我不知道如何问它。
-
你能给DataClass类吗?尝试一下会有所帮助
-
@azro - 更新
标签: java javafx localtime observablelist