如何找出给定日期、开始时间和结束时间的所有可用持续时间:java

如何找出给定日期、开始时间和结束时间的所有可用持续时间:java,java,date,Java,Date,我的日期和时间格式为开始日期和时间15-05-15 02:00:AM 结束日期和时间15-05-15 06:00:AM。时间间隔为60分钟` 如何找出这两个日期和时间之间的可用时间 结果将是 start Time : 15-05-15 02:00:AM end Time : 15-05-15 03:00:AM start Time : 15-05-15 03:00:AM end Time : 15-05-15 04:00:AM start Time : 15-05-15 05:00:AM end

我的日期和时间格式为开始日期和时间
15-05-15 02:00:AM
结束日期和时间<代码>15-05-15 06:00:AM。时间间隔为60分钟`

如何找出这两个日期和时间之间的可用时间

结果将是

start Time : 15-05-15 02:00:AM end Time : 15-05-15 03:00:AM
start Time : 15-05-15 03:00:AM end Time : 15-05-15 04:00:AM
start Time : 15-05-15 05:00:AM end Time : 15-05-15 06:00:AM
如果开始日期时间和结束日期时间范围在第二天范围内,请帮助我处理

我正在使用
Java7

谢谢

Java8 从开始将
字符串
值解析为
LocalDateTime

String startAt = "15-05-15 02:00:AM";
String endAt = "15-05-15 06:00:AM";

String format = "dd-MM-yy hh:mm':'a";

LocalDateTime startTime = LocalDateTime.parse(startAt, DateTimeFormatter.ofPattern(format));
LocalDateTime endTime = LocalDateTime.parse(endAt, DateTimeFormatter.ofPattern(format));
while (endTime.isAfter(startTime)) {
    LocalDateTime next = startTime.plusMinutes(60);
    System.out.println("StartTime : " + startTime.format(DateTimeFormatter.ofPattern(format)) + "; End Time : " + next.format(DateTimeFormatter.ofPattern(format)));
    startTime = next;
}
然后使用循环,增加“开始”
LocalDateTime
的值,直到该值等于或等于“结束”
LocalDateTime

String startAt = "15-05-15 02:00:AM";
String endAt = "15-05-15 06:00:AM";

String format = "dd-MM-yy hh:mm':'a";

LocalDateTime startTime = LocalDateTime.parse(startAt, DateTimeFormatter.ofPattern(format));
LocalDateTime endTime = LocalDateTime.parse(endAt, DateTimeFormatter.ofPattern(format));
while (endTime.isAfter(startTime)) {
    LocalDateTime next = startTime.plusMinutes(60);
    System.out.println("StartTime : " + startTime.format(DateTimeFormatter.ofPattern(format)) + "; End Time : " + next.format(DateTimeFormatter.ofPattern(format)));
    startTime = next;
}
打印出来的

StartTime : 15-05-15 02:00:AM; End Time : 15-05-15 03:00:AM
StartTime : 15-05-15 03:00:AM; End Time : 15-05-15 04:00:AM
StartTime : 15-05-15 04:00:AM; End Time : 15-05-15 05:00:AM
StartTime : 15-05-15 05:00:AM; End Time : 15-05-15 06:00:AM
乔达时间(其他人) 哪张照片

StartTime : 15-05-15 02:00:AM; End Time : 15-05-15 03:00:AM
StartTime : 15-05-15 03:00:AM; End Time : 15-05-15 04:00:AM
StartTime : 15-05-15 04:00:AM; End Time : 15-05-15 05:00:AM
StartTime : 15-05-15 05:00:AM; End Time : 15-05-15 06:00:AM
“我不允许使用第三方库”(非推荐方法) 哪个打印

Start Time : 15-05-15 02:00:AM; End Time : 15-05-15 03:00:AM
Start Time : 15-05-15 03:00:AM; End Time : 15-05-15 04:00:AM
Start Time : 15-05-15 04:00:AM; End Time : 15-05-15 05:00:AM
Start Time : 15-05-15 05:00:AM; End Time : 15-05-15 06:00:AM
java.util.Date开始日期;
java.util.Date-endDate;
java.util.Date currDate=startDate;
而(当前日期<结束日期){
Calendar cal=新的Gregorianalendar();
校准设置时间(当前日期);
计算添加(日历小时/天,1);
System.out.println(“StartTime:+StartTime.format(模式的DateTimeFormatter.of(格式))+“结束时间:+cal.getTime().format(模式的DateTimeFormatter.of(格式)));
currDate=cal.getTime();
}

为什么不使用Duration类?@MadProgrammer谢谢你的回答,你能帮我在java 7中做同样的事情吗?我们不能使用DurationInstance.getSeconds()吗;然后我们可以应用逻辑将其转换为适当的格式。hmmm。。谢谢你的解释。我只是想知道这也是另一种方式,对吗?@Bilbobbaggins只是简单地考虑到了这一点;)。我可能遗漏了一些东西,但对于
持续时间
,您仍然需要从A点到A点+60秒的时间…不是吗?
Start Time : 15-05-15 02:00:AM; End Time : 15-05-15 03:00:AM
Start Time : 15-05-15 03:00:AM; End Time : 15-05-15 04:00:AM
Start Time : 15-05-15 04:00:AM; End Time : 15-05-15 05:00:AM
Start Time : 15-05-15 05:00:AM; End Time : 15-05-15 06:00:AM
java.util.Date startDate;
java.util.Date endDate;
java.util.Date currDate = startDate;

while (currDate < endDate) {
    Calendar cal = new GregorianCalendar();
    cal.setTime(currDate);
    cal.add(Calendar.HOUR_OF_DAY, 1);

    System.out.println("StartTime : " + startTime.format(DateTimeFormatter.ofPattern(format)) + "; End Time : " + cal.getTime().format(DateTimeFormatter.ofPattern(format)));
    currDate = cal.getTime();
}