validarDataHoraInt static method

String? validarDataHoraInt(
  1. int? dataHora
)

Valida uma data/hora no formato AAAAMMDDHHMMSS (int) Retorna null se válido, ou uma mensagem de erro se inválido

Implementation

static String? validarDataHoraInt(int? dataHora) {
  if (dataHora == null) {
    return 'Data/hora é obrigatória';
  }

  final dataHoraStr = dataHora.toString();
  if (dataHoraStr.length != 14) {
    return 'Data/hora deve ter 14 dígitos (AAAAMMDDHHMMSS)';
  }

  final ano = int.tryParse(dataHoraStr.substring(0, 4));
  final mes = int.tryParse(dataHoraStr.substring(4, 6));
  final dia = int.tryParse(dataHoraStr.substring(6, 8));
  final hora = int.tryParse(dataHoraStr.substring(8, 10));
  final minuto = int.tryParse(dataHoraStr.substring(10, 12));
  final segundo = int.tryParse(dataHoraStr.substring(12, 14));

  if (ano == null ||
      mes == null ||
      dia == null ||
      hora == null ||
      minuto == null ||
      segundo == null) {
    return 'Data/hora deve conter apenas números';
  }

  if (ano < 2000 || ano > 2100) {
    return 'Ano deve estar entre 2000 e 2100';
  }

  if (mes < 1 || mes > 12) {
    return 'Mês deve estar entre 01 e 12';
  }

  if (dia < 1 || dia > 31) {
    return 'Dia deve estar entre 01 e 31';
  }

  if (hora < 0 || hora > 23) {
    return 'Hora deve estar entre 00 e 23';
  }

  if (minuto < 0 || minuto > 59) {
    return 'Minuto deve estar entre 00 e 59';
  }

  if (segundo < 0 || segundo > 59) {
    return 'Segundo deve estar entre 00 e 59';
  }

  // Validação básica de data/hora válida
  try {
    DateTime(ano, mes, dia, hora, minuto, segundo);
  } catch (e) {
    return 'Data/hora inválida';
  }

  return null;
}