Java 测试当前时间两个值之间是否匹配?

Java 测试当前时间两个值之间是否匹配?,java,android,Java,Android,我想测试当前时间。 这两次是一样的吗 -带着便条,我已经完成了一项工作 函数输入开始时间 是时候结束了 现在我想完成这个特殊的功能。 我正在测试这两次之间的输入值 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);

我想测试当前时间。 这两次是一样的吗

-带着便条,我已经完成了一项工作 函数输入开始时间 是时候结束了

现在我想完成这个特殊的功能。 我正在测试这两次之间的输入值

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        int hourStart = 5;
        int minuteStart = 30;
        String PMAMStart="AM";
        int hourEnd = 6;
        int minuteEnd = 30;
        String PMAMEnd="AM";

       boolean checkTime=  checkCurrentTimeBetweenTowVlue(hourStart,minuteStart,PMAMStart,hourEnd,minuteEnd,PMAMEnd);

    }


    private boolean checkCurrentTimeBetweenTowVlue(int hStart,int mStart,String ampmStart,int hEnd,int mEnd,String ampmEnd){

      Calendar cal = Calendar.getInstance();

      return false;
    }


}

从cal对象获取当前分钟和小时数。将开始、结束和当前时间转换为分钟,这样比较起来就很容易了

private boolean checkCurrentTimeBetweenTowVlue(int hStart,int mStart,String ampmStart,int hEnd,int mEnd,String ampmEnd){

  Calendar cal = Calendar.getInstance();
  int hours = cal.get(Calendar.HOUR_OF_DAY);
  int minutes = cal.get(Calendar.MINUTE); 

  if(ampmStart.equals("PM")){
     hStart += 12;
  }
  int minutes_start = hStart*60 + mStart; 

  if(ampmEnd.equals("PM")){
     hEnd += 12;
  }
  int minutes_end = hEnd*60 + mEnd; 

  int minutes_curr = hours*60 + minutes;


  if(minutes_curr>minutes_start && minutes_curr<minutes_end){
     return true;
  }

  return false;
}
private boolean checkCurrentTimeBetweenTowVlue(int-hStart,int-mStart,String-ampmStart,int-hEnd,int-mEnd,String-ampmEnd){
Calendar cal=Calendar.getInstance();
int hours=cal.get(日历小时);
int minutes=cal.get(Calendar.minutes);
if(ampmStart.equals(“PM”)){
hStart+=12;
}
int minutes_start=hStart*60+mStart;
如果(安培数等于(“PM”)){
hEnd+=12;
}
分钟内结束=hEnd*60+修复;
int minutes\u curr=小时*60+分钟;

在您的情况下,如果(分钟数>分钟数>开始时间和分钟数,您可以为开始日期和结束日期设置单独的日历字段,如上午、下午、小时和分钟,将时间转换为分钟,然后找出时间之间的差异。解决方案如下:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        int hourStart = 5;
        int minuteStart = 30;
        String PMAMStart="AM";
        int hourEnd = 6;
        int minuteEnd = 30;
        String PMAMEnd="AM";

        boolean checkTime=  checkCurrentTimeBetweenTwoValues(hourStart,minuteStart,PMAMStart,hourEnd,minuteEnd,PMAMEnd);

        if (checkTime) {
            System.out.println("Time is Same");
        } else {
            System.out.println("Time is not Same");
        }

    }

    private boolean checkCurrentTimeBetweenTwoValues(int hStart,int mStart,String ampmStart,int hEnd,int mEnd,String ampmEnd){

      Calendar startCalendar = Calendar.getInstance();
      Calendar endCalendar = Calendar.getInstance();

      if (ampmStart.equalsIgnoreCase("AM")) {
          startCalendar.set(Calendar.AM_PM, 0);
      } else {
          startCalendar.set(Calendar.AM_PM, 1);
      }

      startCalendar.setTimeZone(TimeZone.getDefault());
      startCalendar.set(Calendar.HOUR, hStart);
      startCalendar.set(Calendar.MINUTE, mStart);

      if (ampmEnd.equalsIgnoreCase("AM")) {
          endCalendar.set(Calendar.AM_PM, 0);
      } else {
          endCalendar.set(Calendar.AM_PM, 1);
      }

      endCalendar.setTimeZone(TimeZone.getDefault());
      endCalendar.set(Calendar.HOUR, hEnd);
      endCalendar.set(Calendar.MINUTE, mEnd);

      long timeDifference = TimeUnit.MILLISECONDS.toMinutes(
            Math.abs(endCalendar.getTimeInMillis() - startCalendar.getTimeInMillis()));
      System.out.println(("Time Difference: " + timeDifference));

      return (timeDifference == 0);
    }
}
public static boolean isNowBetween(int startHour, int startMinute, int endHour, int endMinute) {
    LocalTime start = LocalTime.of(startHour, startMinute);
    LocalTime end = LocalTime.of(endHour, endMinute);
    LocalTime now = LocalTime.now();
    return now.isAfter(start) && now.isBefore(end);
}
您还可以使用
TimeUnit.millizes.toSeconds
检查秒数,但为此,您需要设置日历实例的
Seconds
组件

问候,, AJ

如果您可以使用Java 8(从Android中的API级别26开始),或者如果您愿意/能够/允许导入,那么以下可能是一个不错的解决方案:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        int hourStart = 5;
        int minuteStart = 30;
        String PMAMStart="AM";
        int hourEnd = 6;
        int minuteEnd = 30;
        String PMAMEnd="AM";

        boolean checkTime=  checkCurrentTimeBetweenTwoValues(hourStart,minuteStart,PMAMStart,hourEnd,minuteEnd,PMAMEnd);

        if (checkTime) {
            System.out.println("Time is Same");
        } else {
            System.out.println("Time is not Same");
        }

    }

    private boolean checkCurrentTimeBetweenTwoValues(int hStart,int mStart,String ampmStart,int hEnd,int mEnd,String ampmEnd){

      Calendar startCalendar = Calendar.getInstance();
      Calendar endCalendar = Calendar.getInstance();

      if (ampmStart.equalsIgnoreCase("AM")) {
          startCalendar.set(Calendar.AM_PM, 0);
      } else {
          startCalendar.set(Calendar.AM_PM, 1);
      }

      startCalendar.setTimeZone(TimeZone.getDefault());
      startCalendar.set(Calendar.HOUR, hStart);
      startCalendar.set(Calendar.MINUTE, mStart);

      if (ampmEnd.equalsIgnoreCase("AM")) {
          endCalendar.set(Calendar.AM_PM, 0);
      } else {
          endCalendar.set(Calendar.AM_PM, 1);
      }

      endCalendar.setTimeZone(TimeZone.getDefault());
      endCalendar.set(Calendar.HOUR, hEnd);
      endCalendar.set(Calendar.MINUTE, mEnd);

      long timeDifference = TimeUnit.MILLISECONDS.toMinutes(
            Math.abs(endCalendar.getTimeInMillis() - startCalendar.getTimeInMillis()));
      System.out.println(("Time Difference: " + timeDifference));

      return (timeDifference == 0);
    }
}
public static boolean isNowBetween(int startHour, int startMinute, int endHour, int endMinute) {
    LocalTime start = LocalTime.of(startHour, startMinute);
    LocalTime end = LocalTime.of(endHour, endMinute);
    LocalTime now = LocalTime.now();
    return now.isAfter(start) && now.isBefore(end);
}

您尝试过什么,会出现什么错误。除非是要求,否则最好使用
DateTime
的子类之一,例如
LocalDateTime
,从内存中有两种方法可以使用。您的应用程序支持的最低API级别是什么?如果是26或更高,则使用
java.time
for这个.不工作我输入:int hourStart=4;int minuteStart=05;String PMAMStart=“PM”;int hourEnd=4;int minuteEnd=30;String PMAMEnd=“PM”,现在的时间等于下午4:03打印:时间不一样