Lua:
เปรียบเทียบสองวันที่
วิธีทำ:
Lua ไม่มีฟังก์ชันการเปรียบเทียบวันที่แบบในตัว แต่เราสามารถใช้ฟังก์ชัน os.time()
เพื่อแปลงวันที่เป็นรูปแบบตัวเลข (เวลายุค) และจากนั้นเปรียบเทียบพวกเขา ง่ายนิดเดียว
-- แปลงวันที่เป็นเวลายุค
local date1 = os.time({year=2023, month=4, day=1})
local date2 = os.time({year=2023, month=4, day=15})
-- เปรียบเทียบวันที่
if date1 > date2 then
print("Date1 มาหลังจาก Date2.")
elseif date1 < date2 then
print("Date1 มาก่อน Date2.")
else
print("Date1 เหมือนกับ Date2.")
end
ผลลัพธ์ตัวอย่างหากเรียกใช้กับวันที่เหล่านี้:
Date1 มาก่อน Date2.
ศึกษาเพิ่มเติม
ในอดีต Lua ไม่มีประเภทข้อมูลวันที่ โปรแกรมเมอร์พึ่งพาฟังก์ชัน os.time()
สำหรับการดำเนินงานวันที่-เวลา ซึ่งยังคงใช้งานอยู่ในปัจจุบัน os.time()
คืนค่าเวลาเป็นวินาทีนับตั้งแต่ยุค (หรือเรียกว่า Unix time ซึ่งเริ่มต้นในวันที่ 1 มกราคม 1970) นี่เป็นสิ่งที่มีประโยชน์เนื่องจากมันแปลงวันที่เป็นตัวเลข ทำให้การเปรียบเทียบง่ายขึ้น
สำหรับทางเลือกอื่น คุณอาจเขียนตัวเปรียบเทียบที่กำหนดเองสำหรับตารางวันที่ เปรียบเทียบแต่ละฟิลด์ (ปี, เดือน, วัน) ด้วยตนเอง หรือใช้ไลบรารีวันที่ของบุคคลที่สามเช่น LuaDate
เมื่อใช้ os.time()
ให้ระมัดระวังเกี่ยวกับเขตเวลาและการเปลี่ยนแปลงเวลาออมแสง ฟังก์ชันสมมติว่าคุณกำลังให้เวลาท้องถิ่นเว้นแต่คุณจะระบุอย่างอื่น
ดูเพิ่มเติม
- Lua 5.4 คู่มืออ้างอิง: https://www.lua.org/manual/5.4/
- LuaDate, โมดูลวันที่และเวลา: https://github.com/Tieske/date
- การเข้าใจ Unix timestamp: https://en.wikipedia.org/wiki/Unix_time