เปรียบเทียบสองวันที่

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 สองตัวทั้งโดยตรงและโดยใช้สตริงที่จัดรูปแบบสำหรับการเปรียบเทียบที่ต้องการไม่สนใจส่วนประกอบเฉพาะเช่นเวลา