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

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

วิธีทำ:

Ruby ทำให้ชีวิตเราง่ายขึ้นด้วยคลาส Date มาดูการทำงานของมันกัน

require 'date'

date1 = Date.new(2023, 3, 14)
date2 = Date.new(2023, 3, 15)

puts date1 == date2   # ผลลัพธ์: false
puts date1 != date2   # ผลลัพธ์: true
puts date1 < date2    # ผลลัพธ์: true
puts date1 > date2    # ผลลัพธ์: false
puts date1 <= Date.today # ผลลัพธ์: ขึ้นอยู่กับวันที่ของวันนี้
puts date1 >= Date.today # ผลลัพธ์: ขึ้นอยู่กับวันที่ของวันนี้

การลงลึก

การเปรียบเทียบวันที่ไม่ใช่เรื่องใหม่ มันเป็นพื้นฐานเหมือนการเปรียบเทียบจำนวนเต็ม แต่มีความซับซ้อนเพราะวันที่มีส่วนประกอบ – วัน, เดือน, ปี ใน Ruby, คลาส Date (จากไลบรารีมาตรฐาน) รับภาระนี้มา จัดการกับเดือน, ปีอธิกสุรทิน, ฯลฯ

คุณได้รู้จักการเปรียบเทียบพื้นฐาน: ==, !=, <, >, <=, >= แต่ Ruby มีอีกมากที่อยู่ใต้ฝาครอบ

  • Date.parse สามารถทำความเข้าใจและแปลงวันที่จากสตริง
  • DateTime ให้ความแม่นยำมากขึ้น, รองรับเวลาและโซนเวลา
  • ไลบรารีเช่น ‘ActiveSupport’ (จาก Rails) เพิ่มเมธอดที่เกี่ยวข้องกับวันที่มากขึ้น

ระวังข้อผิดพลาด:

  • โซนเวลาอาจทำให้คุณพลาดถ้าคุณไม่ระมัดระวัง
  • วินาทีอธิกสุรทินไม่ได้ถูกรวมอยู่ในคลาส Date/DateTime มาตรฐานของ Ruby

ทางเลือกที่ไม่ใช่คลาส Date ประกอบด้วย:

  • การใช้เวลาหมายเลข (timestamps) และเปรียบเทียบพวกมันเหมือนเลข
  • ไลบรารี ’time’ สำหรับการจัดการเวลาที่ซับซ้อนมากขึ้น

การเปรียบเทียบมีความซับซ้อนอย่างรวดเร็ว ถ้าคุณกำลังจัดตารางเวลาและต้องการเปรียบเทียบช่วงเวลา หรือจัดการกับเหตุการณ์ที่เกิดซ้ำ อาจต้องการระดับการทำงานระดับสูงที่สร้างขึ้นบนคลาส Date และ Time ของ Ruby เมธอด between? ของ ActiveRecord หรือ gems เช่น ‘IceCube’ สำหรับเหตุการณ์ที่เกิดซ้ำอาจช่วยประหยัดเวลาและลดความปวดหัวได้มาก

ดูเพิ่มเติม