From 3f36666c4dc33f988d1c635a9cfc1fe71fb7a59e Mon Sep 17 00:00:00 2001 From: "MSI\\joaly" Date: Fri, 21 Nov 2025 22:47:02 -0400 Subject: [PATCH] Add getInstance() and isHourInRange() methods to DateHelper for compatibility --- .../infraestructure/helpers/DateHelper.java | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/banesco/common/infraestructure/helpers/DateHelper.java b/src/main/java/com/banesco/common/infraestructure/helpers/DateHelper.java index 116c9ac..02ef237 100644 --- a/src/main/java/com/banesco/common/infraestructure/helpers/DateHelper.java +++ b/src/main/java/com/banesco/common/infraestructure/helpers/DateHelper.java @@ -19,13 +19,24 @@ public final class DateHelper { private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss"); + // Instancia única para el patrón Singleton (compatibilidad con código existente) + private static final DateHelper INSTANCE = new DateHelper(); + /** - * Constructor privado para prevenir que la clase sea instanciada. + * Constructor privado para prevenir que la clase sea instanciada directamente. */ private DateHelper() { // Clase de utilidad, no necesita ser instanciada. } + /** + * Obtiene la instancia única de DateHelper (patrón Singleton). + * @return La instancia única de DateHelper. + */ + public static DateHelper getInstance() { + return INSTANCE; + } + /** * Obtiene la fecha y/o hora actual en la zona horaria de Venezuela. * @@ -65,4 +76,37 @@ public final class DateHelper { public static String getCurrentVenezuelanTime() { return ZonedDateTime.now(VENEZUELA_ZONE_ID).format(TIME_FORMATTER); } + + /** + * Verifica si una hora está dentro de un rango especificado. + * + * @param hourBegin Hora de inicio en formato HHmm (ej: 800 para 08:00, 1800 para 18:00). + * @param hourFinish Hora de fin en formato HHmm (ej: 800 para 08:00, 1800 para 18:00). + * @param timeString Hora a verificar en formato "HH:mm:ss" o "HH:mm". + * @return true si la hora está dentro del rango [hourBegin, hourFinish], false en caso contrario. + */ + public boolean isHourInRange(int hourBegin, int hourFinish, String timeString) { + if (timeString == null || timeString.trim().isEmpty()) { + return false; + } + + // Extrae las horas y minutos del String (formato "HH:mm:ss" o "HH:mm") + String[] timeParts = timeString.split(":"); + if (timeParts.length < 2) { + return false; + } + + try { + int hour = Integer.parseInt(timeParts[0]); + int minute = Integer.parseInt(timeParts[1]); + + // Convierte la hora a formato HHmm + int currentHour = hour * 100 + minute; + + // Verifica si está en el rango + return currentHour >= hourBegin && currentHour <= hourFinish; + } catch (NumberFormatException e) { + return false; + } + } } \ No newline at end of file