validarDataHoraFormato static method

String? validarDataHoraFormato(
  1. int? dataHora
)

Valida se a data está no formato AAAAMMDDHHMMSS

Implementation

static String? validarDataHoraFormato(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.parse(dataHoraStr.substring(0, 4));
  final mes = int.parse(dataHoraStr.substring(4, 6));
  final dia = int.parse(dataHoraStr.substring(6, 8));
  final hora = int.parse(dataHoraStr.substring(8, 10));
  final minuto = int.parse(dataHoraStr.substring(10, 12));
  final segundo = int.parse(dataHoraStr.substring(12, 14));

  if (ano < 1900 || ano > 2100) {
    return 'Ano deve estar entre 1900 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 adicional: verifica se a data/hora é válida
  try {
    DateTime(ano, mes, dia, hora, minuto, segundo);
  } catch (e) {
    return 'Data/hora inválida';
  }

  return null;
}