如何比较 android 中的两个时间(12 小时格式)

How to Compare Two time(12 hours format) in android

我有两次,来自数据库。一次是 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");
    }

此片段的输出是:

time1 < time2

该片段展示了如何将您的时间字符串解析为 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 导入日期和时间 类。

链接

java 中没有用户定义的运算符重载。 但是你可以尝试这样的事情:

  class mTime{

    int minute , hour;
    public mTime(int hour, int minute){
        this.minute = minute;
        this.hour = hour ;
    }
    public mTime(String time){
        this.hour = Integer.valueOf(time.substring(0,2));
        this.minute = Integer.valueOf(time.substring(3,5));

        if(time.charAt(6) == 'P'){
            hour = hour+12;
        }

    }
    public boolean isBiggerThan(mTime other)
    {
        if(this.hour>other.getHour())
            return true;
        if(this.hour == other.getHour()){
            if(this.minute > other.getMinute())
                return true;
        }
        return false;
    }
    public int getMinute(){
        return minute;
    }
    public int getHour(){
        return hour;
    }
}