convertFromISODateTime static method
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;
}
}