Java 在android中,如果结束时间不在当前日期,如何获取结束日期
我试图使一个应用程序,需要开始日期,开始时间和结束时间。如果结束时间不在开始日期内,那么如何根据结束时间计算结束日期 这是我想要的截图 如图所示,当您输入开始日期、开始时间和结束时间时,结束时间将在下一个日期结束,它将自动计算结束日期。(我还画了线。) 我怎样才能做到这一点呢?这背后的逻辑是什么。java.time 此代码段的输出为: 我已经向您展示了如何使用Java 在android中,如果结束时间不在当前日期,如何获取结束日期,java,android,datetime,Java,Android,Datetime,我试图使一个应用程序,需要开始日期,开始时间和结束时间。如果结束时间不在开始日期内,那么如何根据结束时间计算结束日期 这是我想要的截图 如图所示,当您输入开始日期、开始时间和结束时间时,结束时间将在下一个日期结束,它将自动计算结束日期。(我还画了线。) 我怎样才能做到这一点呢?这背后的逻辑是什么。java.time 此代码段的输出为: 我已经向您展示了如何使用DateTimeFormatter格式化时间。您可能也希望对日期使用格式化程序 问题:我可以在Android上使用java.time吗?
DateTimeFormatter
格式化时间。您可能也希望对日期使用格式化程序
问题:我可以在Android上使用java.time吗?
是的,java.time在较旧和较新的Android设备上运行良好。它至少需要Java6
- 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
- 在Java6和Java7中,获取三个后端口,即现代类的后端口(三个十用于JSR310;参见底部的链接)
- 在(较旧的)Android上使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保从带有子包的
导入日期和时间类org.threeten.bp
- 解释如何使用java.time
- ,其中首先描述了
java.time
- ,java.time的后端口到Java6和Java7(JSR-310为三十)
- ,Android版Three Ten Backport
- ,解释得非常透彻
java.time
(最好使用),我认为API级别为24或更高…是的,我正在使用它。
ZoneId zone = ZoneId.of("America/Chicago");
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("h:mm a (OOOO)", Locale.US);
LocalDate startDate = LocalDate.of(2019, Month.SEPTEMBER, 18);
LocalTime startTime = LocalTime.of(14, 0);
LocalTime endTime = LocalTime.of(4, 0);
ZonedDateTime start = ZonedDateTime.of(startDate, startTime, zone);
ZonedDateTime end = ZonedDateTime.of(startDate, endTime, zone);
if (end.isBefore(start)) {
end = ZonedDateTime.of(startDate.plusDays(1), endTime, zone);
}
System.out.println("Date: " + startDate);
System.out.println("Start Time: " + start.format(timeFormatter));
System.out.println("End Time: " + end.format(timeFormatter));
System.out.println("Ends on " + end.toLocalDate());
Date: 2019-09-18
Start Time: 2:00 PM (GMT-05:00)
End Time: 4:00 AM (GMT-05:00)
Ends on 2019-09-19