es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo comparar si la hora actual es mayor que otra hora en Java?

Tengo un trabajo en el backend que se ejecuta una vez al día y se programa para una hora en particular según la entidad/usuario, etc.

Ahora, quiero validar si la hora actual es anterior al trabajo. Si es así, entonces el trabajo se puede reprogramar; de lo contrario, si el trabajo ya pasó, entonces por supuesto no se puede reprogramar para ese día.

public static String getCurrentTime(String format) {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    return sdf.format(cal.getTime());
}

String time = getCurrentTime("yyyy-MM-dd HH:mm:ss");
String backendJobTime = getBackendJobSchedule();
String[] onlyTime = time.split("\\s+");
String timeOnly = onlyTime[1];
Integer.parseInt(timeOnly);

Lo mismo para el trabajo en el backend:

if(time < backendJobTime){
    System.out.println("El trabajo aún no se ha ejecutado...");
}

Ahora, quiero obtener una subcadena de la hora y luego comparar con otra hora del trabajo en el backend para ver si es anterior. No puedo escribir la lógica completa.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para comparar la hora actual con la hora programada del trabajo, puedes hacer lo siguiente:

    1. Obtén la hora actual en el formato deseado utilizando el método getCurrentTime() como se muestra en el código proporcionado.
    2. Obtén la hora programada del trabajo utilizando el método getBackendJobSchedule() (que no se muestra en el código proporcionado).

    3. Extrae la parte de tiempo tanto de la hora actual como de la hora programada del trabajo utilizando el método substring(). Por ejemplo, si el formato de tiempo es “HH:mm:ss”, puedes obtener la parte de tiempo de la siguiente manera:

      String currentTime = getCurrentTime("yyyy-MM-dd HH:mm:ss");
      String currentOnlyTime = currentTime.substring(11);
      
      String backendJobTime = getBackendJobSchedule();
      String backendJobOnlyTime = backendJobTime.substring(11);
      

    4. Convierte las partes de tiempo a enteros utilizando el método Integer.parseInt() para la comparación.
      int currentHour = Integer.parseInt(currentOnlyTime.substring(0, 2));
      int currentMinute = Integer.parseInt(currentOnlyTime.substring(3, 5));
      
      int backendJobHour = Integer.parseInt(backendJobOnlyTime.substring(0, 2));
      int backendJobMinute = Integer.parseInt(backendJobOnlyTime.substring(3, 5));
      
    5. Compara las horas y los minutos por separado. Si la hora actual es menor que la hora programada del trabajo, entonces el trabajo aún no se ha ejecutado. Si las horas son iguales y el minuto actual es menor que el minuto programado del trabajo, entonces el trabajo aún no se ha ejecutado.
      if (currentHour < backendJobHour ||
          (currentHour == backendJobHour && currentMinute < backendJobMinute)) {
          System.out.println("El trabajo aún no se ha ejecutado...");
      }
      

    Esta lógica asume que el trabajo está programado para el mismo día que la fecha actual. Si el trabajo puede programarse para cualquier fecha futura, entonces es posible que también necesites comparar las fechas.

Comments are closed.