Dart:
Comparando dos fechas

Cómo hacerlo:

En Dart, puedes comparar fechas usando la clase DateTime, la cual ofrece métodos como isBefore, isAfter y isAtSameMomentAs para una comparación directa. Adicionalmente, la diferencia entre fechas se puede determinar usando el método difference(), proporcionando un objeto Duration que detalla el lapso entre los dos puntos en el tiempo.

Aquí hay un ejemplo básico que ilustra estos conceptos:

void main() {
  DateTime inicioEvento = DateTime(2023, 5, 15);
  DateTime finEvento = DateTime(2023, 5, 20);
  
  // Comprobando si una fecha es antes que otra
  if (inicioEvento.isBefore(finEvento)) {
    print("La fecha de inicio del evento es antes que la fecha de fin del evento.");
  }

  // Comprobando si dos fechas son iguales
  if (!inicioEvento.isAtSameMomentAs(finEvento)) {
    print("Las fechas de inicio y fin no son las mismas.");
  }
  
  // Calculando la diferencia entre dos fechas
  Duration duracionEvento = finEvento.difference(inicioEvento);
  print("El evento dura ${duracionEvento.inDays} días.");
}

/*
Salida:
La fecha de inicio del evento es antes que la fecha de fin del evento.
Las fechas de inicio y fin no son las mismas.
El evento dura 5 días.
*/

Para manipulaciones de fechas más avanzadas, como conversiones de formato, podrías encontrar útil la clase DateFormat del paquete intl. A continuación, se muestra un ejemplo de cómo usarlo para formatear y comparar fechas:

Primero, incluye el paquete intl en tu pubspec.yaml:

dependencies:
  intl: ^0.17.0

Luego, úsalo de la siguiente manera:

import 'package:intl/intl.dart';

void main() {
  DateTime fechaPartida = DateTime(2023, 5, 15);
  DateTime fechaRegreso = DateTime.parse('2023-05-20');

  // Formateando fechas
  var formatter = DateFormat('yyyy-MM-dd');
  print("Partida: ${formatter.format(fechaPartida)}");
  print("Regreso: ${formatter.format(fechaRegreso)}");

  // Comparar usando cadenas formateadas
  if (formatter.format(fechaPartida) == formatter.format(fechaRegreso)) {
    print("Las fechas de partida y regreso son las mismas.");
  } else {
    print("Las fechas de partida y regreso son diferentes.");
  }
}

/*
Salida:
Partida: 2023-05-15
Regreso: 2023-05-20
Las fechas de partida y regreso son diferentes.
*/

Este ejemplo muestra cómo comparar dos objetos DateTime tanto directamente como usando cadenas formateadas para comparaciones que necesitan ignorar componentes específicos como la hora.