Dart:
Jämföra två datum

Hur:

I Dart kan du jämföra datum med klassen DateTime, som erbjuder metoder som isBefore, isAfter och isAtSameMomentAs för direkt jämförelse. Dessutom kan skillnaden mellan datum bestämmas med metoden difference(), som ger ett Duration-objekt som detaljerar spannet mellan de två tidpunkterna.

Här är ett grundläggande exempel som illustrerar dessa koncept:

void main() {
  DateTime eventStart = DateTime(2023, 5, 15);
  DateTime eventEnd = DateTime(2023, 5, 20);
  
  // Kontrollera om ett datum är före ett annat
  if (eventStart.isBefore(eventEnd)) {
    print("Händelsens startdatum är före händelsens slutdatum.");
  }

  // Kontrollera om två datum är desamma
  if (!eventStart.isAtSameMomentAs(eventEnd)) {
    print("Start- och slutdatumen är inte desamma.");
  }
  
  // Beräkna skillnaden mellan två datum
  Duration eventDuration = eventEnd.difference(eventStart);
  print("Händelsen varar i ${eventDuration.inDays} dagar.");
}

/*
Utskrift:
Händelsens startdatum är före händelsens slutdatum.
Start- och slutdatumen är inte desamma.
Händelsen varar i 5 dagar.
*/

För mer avancerade datummanipulationer, såsom formatkonverteringar, kan du finna klassen DateFormat från paketet intl användbar. Nedan följer ett exempel som visar hur man använder den för att formatera och jämföra datum:

Först, inkludera paketet intl i din pubspec.yaml:

dependencies:
  intl: ^0.17.0

Använd sedan så här:

import 'package:intl/intl.dart';

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

  // Formatera datum
  var formatter = DateFormat('yyyy-MM-dd');
  print("Avresa: ${formatter.format(departureDate)}");
  print("Återkomst: ${formatter.format(returnDate)}");

  // Jämför med formaterade strängar
  if (formatter.format(departureDate) == formatter.format(returnDate)) {
    print("Avresedatum och återkomstdatum är detsamma.");
  } else {
    print("Avresedatum och återkomstdatum är olika.");
  }
}

/*
Utskrift:
Avresa: 2023-05-15
Återkomst: 2023-05-20
Avresedatum och återkomstdatum är olika.
*/

Detta exempel visar hur man jämför två DateTime objekt både direkt och genom att använda formaterade strängar för jämförelser som behöver ignorera specifika komponenter som tid.