השוואת שני תאריכים

Dart:
השוואת שני תאריכים

איך לעשות זאת:

ב-Dart, ניתן להשוות תאריכים באמצעות מחלקת DateTime, המציעה שיטות כמו isBefore, isAfter, ו-isAtSameMomentAs להשוואה ישירה. נוסף על כך, ניתן לקבוע את ההבדל בין תאריכים באמצעות השיטה difference(), המספקת אובייקט מסוג Duration המפרט את הפער בין שני נקודות בזמן.

הנה דוגמה בסיסית הממחישה את המושגים הללו:

void main() {
  DateTime eventStart = DateTime(2023, 5, 15);
  DateTime eventEnd = DateTime(2023, 5, 20);
  
  // בדיקה אם תאריך אחד לפני השני
  if (eventStart.isBefore(eventEnd)) {
    print("תאריך תחילת האירוע לפני תאריך סיום האירוע.");
  }

  // בדיקה אם שני התאריכים זהים
  if (!eventStart.isAtSameMomentAs(eventEnd)) {
    print("תאריכי התחלה וסיום האירוע אינם זהים.");
  }
  
  // חישוב ההבדל בין שני תאריכים
  Duration eventDuration = eventEnd.difference(eventStart);
  print("משך האירוע הוא ${eventDuration.inDays} ימים.");
}

/*
פלט:
תאריך תחילת האירוע לפני תאריך סיום האירוע.
תאריכי התחלה וסיום האירוע אינם זהים.
משך האירוע הוא 5 ימים.
*/

למניפולציות תאריכים מתקדמות יותר, כמו המרות פורמטים, ייתכן ותמצאו את מחלקת DateFormat מהחבילה intl מועילה. להלן דוגמה המדגימה איך להשתמש בה לצורך פורמט והשוואת תאריכים:

ראשית, כלול את החבילה intl בקובץ pubspec.yaml שלך:

dependencies:
  intl: ^0.17.0

לאחר מכן, השתמש בה כך:

import 'package:intl/intl.dart';

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

  // פורמט תאריכים
  var formatter = DateFormat('yyyy-MM-dd');
  print("יציאה: ${formatter.format(departureDate)}");
  print("חזרה: ${formatter.format(returnDate)}");

  // השוואה באמצעות מחרוזות מפורמטות
  if (formatter.format(departureDate) == formatter.format(returnDate)) {
    print("תאריכי היציאה והחזרה זהים.");
  } else {
    print("תאריכי היציאה והחזרה שונים.");
  }
}

/*
פלט:
יציאה: 2023-05-15
חזרה: 2023-05-20
תאריכי היציאה והחזרה שונים.
*/

דוגמה זו מציגה כיצד להשוות בין שני אובייקטים מסוג DateTime גם באופן ישיר וגם באמצעות מחרוזות מפורמטות להשוואות שצריכות להתעלם מרכיבים ספציפיים כמו הזמן.