java - 如果结束时间不在android中的当前日期,如何获取结束日期
问题描述
我正在尝试制作一个需要开始日期、开始时间和结束时间的应用程序。如果结束时间不在开始日期,那么我如何根据结束时间计算结束日期。
这是我想要的截图
如图所示,当你输入开始日期、开始时间和结束时间时,结束时间是在下一个日期结束,它会自动计算结束日期。(我也强调了它。)
我怎样才能做到这一点?背后的逻辑是什么。
解决方案
java.time
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
我已经向您展示了如何使用 aDateTimeFormatter
来格式化时间。您可能也希望对日期使用格式化程序。
问题:我可以在 Android 上使用 java.time 吗?
是的,java.time 在较旧和较新的 Android 设备上运行良好。它只需要至少Java 6。
- 在 Java 8 及更高版本以及更新的 Android 设备(从 API 级别 26 开始)中,现代 API 是内置的。
- 在 Java 6 和 7 中获得 ThreeTen Backport,现代类的后向端口(ThreeTen 用于 JSR 310;请参阅底部的链接)。
- 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保从
org.threeten.bp
子包中导入日期和时间类。
链接
- Oracle 教程:日期时间解释如何使用 java.time。
- Java 规范请求 (JSR) 310,
java.time
第一次描述的地方。 - ThreeTen Backport 项目,
java.time
Java 6 和 7 的反向移植(ThreeTen for JSR-310)。 - ThreeTenABP , ThreeTen Backport 的 Android 版
- 问题:如何在Android项目中使用ThreeTenABP,有非常详尽的解释。
推荐阅读
- python - 需要帮助理解 np.empty()
- ubuntu - RabbitMQ 代理没有启动
- docker - Docker 命名空间、docker on virtualbox、镜像环境
- visual-studio - 如何在 Visual Studio 扩展中识别 ASP.NET Core 项目
- python - Python for-in-loop 停止对从 for-in-loop 创建的列表对象的迭代
- angular - Angular 6 的生产凭证
- c# - 无法从 Microsoft.Build.Tasks.Core 实例化 ResolveComReference 任务
- javascript - 如何在回发时保存动态 html 输入数据?
- rest - 自动反序列化 POST 中的嵌套 json - Jersery + Jackson - 数据库行中缺少类指示符字段
- c - 无法理解,当指针的指针被指针数组减去时如何计算值