convertFromISODateTime static method

String? convertFromISODateTime(
  1. String isoFechaString
)

Esta función recibe una cadena de fecha en formato ISO 8601 y la convierte a una cadena en formato DD/MM/YYYY HH:MM:SS si la fecha es válida, de lo contrario devuelve null.

Parámetros:

  • isoFechaString (String): La cadena de fecha en formato ISO 8601.

Retorna:

  • String?: La fecha en formato DD/MM/YYYY HH:MM:SS si es válida, de lo contrario null.

Ejemplo:

String? fechaDDMMYYYY = convertFromISODate('2021-12-31T10:50:10.000Z');
print(fechaDDMMYYYY); // Imprime: 31/12/2021 10:50:10

Implementation

static String? convertFromISODateTime(String isoFechaString) {
  try {
    /// Expresión regular que valida una fecha. Si viene en el formato : DD/MM/YYYY HH:MM:SS
    /// devuelve la misma fecha
    final regex = RegExp(r'^\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}$');
    bool fechaValida = regex.hasMatch(isoFechaString);
    if (fechaValida) return isoFechaString;

    /// Intentar parsear la fecha usando DateTime.parse
    DateTime dateTime = DateTime.parse(isoFechaString);

    /// Formatear la fecha al formato DD/MM/YYYY HH:MM:SS
    String formattedDateTime = "${dateTime.day.toString().padLeft(2, '0')}/"
        "${dateTime.month.toString().padLeft(2, '0')}/"
        "${dateTime.year.toString()}"
        " ${dateTime.hour.toString().padLeft(2, '0')}:"
        "${dateTime.minute.toString().padLeft(2, '0')}:"
        "${dateTime.second.toString().padLeft(2, '0')}";

    return formattedDateTime;
  } catch (error) {
    FlutterUtilsProvider.logDebug(
        'Error al convertir la fecha (convertFromISODateTime) $isoFechaString a DD/MM/YYYY: $error');

    /// Si ocurre un error al parsear la fecha, devolver null
    return null;
  }
}