java - 如何在android中比较两个时间(12小时格式)
问题描述
我有两次,来自数据库。一次是上午 11:04,另一次是下午 1:00。现在我怎么能这样比较
if(11:04 AM < 1:00 PM){
// code is here
}else{
//Code is here
}
解决方案
java.time 和 ThreeTenABP
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("h:mm a", Locale.ENGLISH);
String s1 = "11:04 AM";
String s2 = "1:00 PM";
LocalTime time1 = LocalTime.parse(s1, timeFormatter);
LocalTime time2 = LocalTime.parse(s2, timeFormatter);
if (time1.isBefore(time2)) {
System.out.println("time1 < time2");
} else {
System.out.println("time1 >= time2");
}
此片段的输出是:
时间1 <时间2
该片段显示了如何将时间字符串解析为LocalTime
对象并使用isBefore
. 还有方法isEqual
和isAfter
。然而,甚至更好。将您的时间作为time
数据类型存储在 SQL 数据库中,并LocalTime
直接从数据库中检索对象并避免解析。
问题:我可以在 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,有非常详尽的解释。
推荐阅读
- web - 如何将前端与我的自定义 Cordapp 集成?
- c++ - 关于 C++ 中的复制构造函数的困惑
- python - PyAudio(PortAudio 问题) Python
- android - 在 viewpager 中访问相机硬件的两个片段
- python - 如何正确编写涉及 python 字典的布尔表达式
- c# - 当计算机有更多内存时,为什么 .net 程序使用更多 VirtualMemorySize64
- java - OCJP 多态性流程
- javascript - 如何在 Javascript 中访问 Rails 变量?
- jquery - 在同一图像标签中设置第二张图像的样式
- scala - functional 不是 play.api.lib 的成员--使用 play-json 将 Scala Map 转换为 JSON