首页 > 解决方案 > 如何在android中比较两个时间(12小时格式)

问题描述

我有两次,来自数据库。一次是上午 11:04,另一次是下午 1:00。现在我怎么能这样比较

 if(11:04 AM < 1:00 PM){
   // code is here
  }else{
   //Code is here
   }

标签: javaandroiddatecalendar

解决方案


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. 还有方法isEqualisAfter。然而,甚至更好。将您的时间作为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子包中导入日期和时间类。

链接


推荐阅读