/** * Clase para parsing y formateo de fechas ISO 8601 con validación completa * Implementa validación estricta de formato y rangos de timezone */ import { ParsedDate } from './interfaces/parsed-date.interface'; import { DateError } from './interfaces/date-error.interface'; export declare class ISO8601Parser { /** * Regex para validación completa de formato ISO 8601 * Soporta: * - Fecha sola: YYYY-MM-DD * - Fecha con tiempo: YYYY-MM-DDTHH:mm:ss * - Con milisegundos: YYYY-MM-DDTHH:mm:ss.sss * - Con timezone: Z o ±HH:MM */ private static readonly ISO_REGEX; /** * Rangos válidos para componentes de fecha */ private static readonly VALID_RANGES; /** * Días por mes (considerando año bisiesto) */ private static readonly DAYS_IN_MONTH; /** * Parsea una cadena ISO 8601 en sus componentes estructurados * @param isoString Cadena en formato ISO 8601 * @returns ParsedDate si es válida, DateError si hay errores */ static parse(isoString: string): ParsedDate | DateError; /** * Formatea un objeto ParsedDate de vuelta a cadena ISO 8601 * @param parsedDate Objeto con componentes de fecha estructurados * @returns Cadena ISO 8601 válida */ static format(parsedDate: ParsedDate): string; /** * Obtiene el número máximo de días en un mes considerando años bisiestos */ private static getMaxDaysInMonth; /** * Determina si un año es bisiesto */ private static isLeapYear; /** * Valida el offset de timezone según los rangos permitidos (-12:00 a +14:00) */ private static validateTimezoneOffset; /** * Verifica si un valor es un número válido */ private static isValidNumber; }