java - 基于java中数据集时间块的日期保存时间范围
问题描述
我需要将一个 ArrayList 数据集转换为另一个 ArrayList 数据集。我需要将“原始数据”转换为下面的“需要的结果”。基本上,我有日期和时间的时间块,需要查看哪些数据集在同一日期的同一时间范围内并保存。不幸的是,算法真的不是我的强项。有什么想法吗?
日期是字符串。对不起,如果我之前没有澄清。
selectedTimeSlotTracker data:
{
("2020-03-04",4,"10:00", "10:30"),
("2020-03-04",5,"10:30", "11:00"),
("2020-03-04",8,"12:00", "12:30"),
("2020-03-04",9,"12:30", "13:00"),
("2020-03-05",8,"12:00", "12:30"),
("2020-03-05",9,"12:30", "13:00")
}
summaryObjects:
{
("2020-03-04","10:00", "11:00"),
("2020-03-04","12:00", "13:00"),
("2020-03-05","12:00", "13:00")
}
private void transformSelectedToSummaryObjects(){
summaryObjects.clear();
int indexOfSummaryObjects = 0;
for (int i = 0; i < selectedTimeSlotTracker.size(); i++ ){
summaryObjects.add(new SummaryObject(selectedTimeSlotTracker.get(i).getDate(), selectedTimeSlotTracker.get(i).getStartTIme(), selectedTimeSlotTracker.get(i).getEndTime()));
for (int j = i; j < selectedTimeSlotTracker.size()-1; j++){
if (selectedTimeSlotTracker.get(j).getDate().equals(selectedTimeSlotTracker.get(j+1).getDate())){
if(selectedTimeSlotTracker.get(j).getEndTime().equals(selectedTimeSlotTracker.get(j+1).getStartTIme())) {
summaryObjects.get(indexOfSummaryObjects).setEndTime(selectedTimeSlotTracker.get(j+1).getEndTime());
i = j + 1;
}
}
}
indexOfSummaryObjects++;
}
courtReservationSummaryAdapter.notifyDataSetChanged();
}
这是我的尝试。不幸的是,它不会创建干净的休息时间,只是将不同日期的结束时间归为同一日期。
下面是我用我的 summaryObjects arraylist 方法得到的数据集,这是错误的。
{(2020-03-04,"10:00", "13:00")}
当我回来时会发布更多信息。
解决方案
将您的日期部分解析为LocalDate
.
LocalDate ld = LocalDate.parse( "2020-03-04" ) ;
将您的时间值解析为LocalTime
.
LocalTime lt = LocalTime.parse( "10:00" ) ;
加入他们制作一个LocalDateTime
.
LocalDateTime ldt = LocalDateTime.of( ld , lt ) ;
LocalDateTime
通过调用isEqual
、isBefore
和比较您的对象isAfter
。提示:询问“此日期时间是否等于或晚于另一个日期时间?”的更短的方式。是问“这个日期时间不是在另一个日期时间之前吗?”。
您应该能够计算出其余的逻辑。了解java.time类使用不可变对象。因此,您将创建新实例,而不是修改现有对象。搜索 Stack Overflow 以了解更多信息,因为这一切都已经处理了很多。
您甚至可能想编写自己的小类来用一对LocalDateTime
对象表示时间跨度,命名为LocalDateTimeSpan
. 如需灵感,请查看ThreeTen-Extra库及其Interval
类LocalDateRange
。
推荐阅读
- python - 如何将数据转换为 JSON 字典?
- firebase - Algolia-错误:找不到模块“firebase”
- hadoop - 使用 hive 在 gcp 中跨项目访问存储桶
- c++ - 获取已保存的事件 Visual Studio DTE
- php - php 中的 Soap Api 实现,由提供的 Wsdl 和 enpoint
- android - 布局之间的空白
- reactjs - 如何在 React Native 中创建全局布局组件?
- java - CompletableFuture 简化自定义示例
- url - 如何使用完全限定的服务器名称地址访问 Rabbitmq 管理 UI?
- python - Python 日期格式