【发布时间】:2022-01-05 19:39:23
【问题描述】:
这是我的要求。很确定有一种优雅的方法可以做到这一点。需要你的帮助。我需要构建一个后端程序来使用用户选择的开始和结束时间来处理多个日期并将其插入到表中。
输入:
StartTime: 11/26/2021 11:00 PM
EndTime: 11/28/2021 04:00 AM
我期待的输出
11/26/2021 11:00 PM
11/26/2021 11:59 PM
11/27/2021 12:00 AM
11/27/2021 11:59 PM
11/28/2021 12:00 AM
11/28/2021 04:00 AM
我的代码
public static void main(String[] args) {
String StartTime = "11/27/2021 11:00 PM";
String EndTime = "11/29/2021 04:00 AM";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm a");
LocalDate localStartDate = LocalDate.parse(StartTime, formatter);
LocalDate localEndDate = LocalDate.parse(EndTime, formatter);
LocalDateTime localStartTime = LocalDateTime.parse(StartTime,formatter);
LocalDateTime localEndTime = LocalDateTime.parse(EndTime,formatter);
List<LocalDateTime> totalDates = new ArrayList<>();
while (!localStartTime.isAfter(localEndTime)) {
totalDates.add(localStartTime);
totalDates.add(localStartTime.with(LocalTime.MAX));
localStartTime = localStartTime.plusDays(1);
localStartTime = localStartTime.with(LocalTime.MIN);
}
totalDates.add(localEndTime.with(LocalTime.MIN));
totalDates.add(localEndTime);
for (int i = 0; i < totalDates.size(); i++) {
System.out.print(totalDates.get(i) + "\n");
}
}
我的输出:
2021-11-27T23:00
2021-11-27T23:59:59.999999999
2021-11-28T00:00
2021-11-28T23:59:59.999999999
2021-11-29T00:00
2021-11-29T23:59:59.999999999
2021-11-29T00:00
2021-11-29T04:00
【问题讨论】:
-
你想用 MIN MAX 和
plusDays完成什么?我很困惑。如果你解释你的目标,也许我们可以更好地指导你。至少,我怀疑您需要了解定义时间跨度的半开放方法。 -
我知道半开放的方法。这是我的要求,用户输入两个时间戳,我需要根据用户输入之间的天数将其转换为不同的输出。
-
提供解释作为对您问题的编辑,而不是作为 cmets。