0Pricing
Lua Academy · บทเรียน

การคำนวณเวลา

บวกและเปรียบเทียบเวลา

การคำนวณเวลา เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

time เป็นเพียงตัวเลข

เนื่องจาก os.time คืนค่าเป็นจำนวนวินาทีธรรมดา การคำนวณเกี่ยวกับ date จึงส่วนใหญ่เป็นการคำนวณเลขทั่วไป ให้บวกวินาทีเพื่อเลื่อนไปข้างหน้า หรือลบเพื่อย้อนกลับ

บทเรียนนี้จะแสดงวิธีเลื่อน time เปรียบเทียบ time และค้นหาช่วงห่างระหว่างสองช่วงเวลา

วินาทีในหนึ่งนาที ชั่วโมง และวัน

เมื่อต้องทำงานกับหน่วยที่ใหญ่ขึ้น โปรดจำค่าพื้นฐานเหล่านี้ไว้: หนึ่งนาทีมี 60 วินาที หนึ่งชั่วโมงมี 3600 วินาที และหนึ่งวันมี 86400 วินาที

การคูณด้วยค่าคงที่เหล่านี้ช่วยให้คุณแสดงระยะเวลาใด ๆ ในหน่วยวินาทีได้

print("Minute:", 60)
print("Hour:", 60 * 60)
print("Day:", 24 * 60 * 60)

อีกหนึ่งชั่วโมงต่อมา

หากต้องการหา time อีกหนึ่งชั่วโมงนับจากตอนนี้ ให้ใช้ os.time() แล้วบวก 3600 วินาที

ส่งตัวเลขใหม่ให้ os.date เพื่อดูผลลัพธ์เป็นข้อความที่อ่านง่าย

local now = os.time()
local later = now + 3600
print(os.date("%H:%M", now))
print(os.date("%H:%M", later))

เมื่อวานและพรุ่งนี้

บวก 86400 วินาทีเพื่อเลื่อนไปข้างหน้าหนึ่งวัน หรือลบค่านี้เพื่อย้อนกลับหนึ่งวัน

นี่เป็นวิธีรวดเร็วในการคำนวณ date ของพรุ่งนี้หรือเมื่อวาน โดยไม่ต้องกังวลเรื่องขอบเขตของเดือน

local now = os.time()
print("Yesterday:", os.date("%Y-%m-%d", now - 86400))
print("Tomorrow: ", os.date("%Y-%m-%d", now + 86400))

การสร้าง date ที่กำหนด

เริ่มคำนวณจาก date ที่กำหนดไว้ด้วยการสร้างตาราง ในที่นี้เราจะสร้างวันขึ้นปีใหม่ของปี 2025 แล้วบวกเพิ่มอีกหนึ่งสัปดาห์

time ที่เพิ่มเข้าไปจะเลื่อนไปเป็นวันที่ 8 มกราคมอย่างถูกต้อง

local start = os.time({year=2025, month=1, day=1})
local week = start + 7 * 86400
print(os.date("%Y-%m-%d", week))

การเปรียบเทียบสองช่วงเวลา

เนื่องจาก time เป็นตัวเลข ตัวดำเนินการเปรียบเทียบทั่วไปจึงใช้งานได้ ตัวเลขที่มากกว่าหมายถึงช่วงเวลาที่มาทีหลัง

จึงตรวจสอบได้ง่ายว่าเส้นตายผ่านไปแล้วหรือยัง

local deadline = os.time({year=2020, month=1, day=1})
local now = os.time()
if now > deadline then
  print("Deadline has passed")
end

ผลต่างเป็นวินาที

การลบ time หนึ่งออกจากอีก time หนึ่งจะให้ช่วงห่างเป็นวินาที Lua ยังมี os.difftime(a, b) ซึ่งคืนค่า a - b เป็นตัวเลข

การใช้ os.difftime เป็นวิธีที่ทำงานได้กับหลายแพลตฟอร์มและเป็นวิธีที่แนะนำสำหรับการหาระยะเวลา

local a = os.time({year=2025, month=1, day=2})
local b = os.time({year=2025, month=1, day=1})
print(os.difftime(a, b))

แปลงวินาทีเป็นวัน

ช่วงห่างที่วัดเป็นวินาทีดิบอาจมีค่ามาก จึงควรหารเพื่อแปลงเป็นหน่วยที่เข้าใจง่ายขึ้น ให้หารด้วย 86400 เพื่อแปลงเป็นวัน หรือหารด้วย 3600 เพื่อแปลงเป็นชั่วโมง

ใช้ math.floor เพื่อตัดส่วนทศนิยมออก เมื่อคุณต้องการเฉพาะหน่วยจำนวนเต็ม

local diff = os.difftime(
  os.time({year=2025, month=1, day=11}),
  os.time({year=2025, month=1, day=1}))
print(diff / 86400, "days")

จำนวนวันก่อนถึงเหตุการณ์

นำแนวคิดต่าง ๆ มารวมกันเพื่อคำนวณถอยหลังไปยัง date ในอนาคต ให้ลบ time ปัจจุบันออกจาก time เป้าหมาย แล้วแปลงวินาทีเป็นจำนวนวันเต็ม

รูปแบบนี้เป็นพื้นฐานของตัวจับเวลาถอยหลังและแอปแจ้งเตือน

local target = os.time({year=2030, month=1, day=1})
local secs = os.difftime(target, os.time())
local days = math.floor(secs / 86400)
print("Days left:", days)

การปรับมาตรฐานด้วย os.time

มีเคล็ดลับที่เป็นประโยชน์คือ เมื่อส่งตารางที่มีฟิลด์เกินช่วงที่กำหนดให้กับ os.time ระบบจะปรับค่าให้ถูกต้อง Day 32 ของ January จะกลายเป็น February 1

วิธีนี้ทำให้คุณเพิ่มวันได้โดยเพียงเพิ่มค่าในฟิลด์ day แล้ว Lua จะจัดการปฏิทินให้เอง

local t = os.time({year=2025, month=1, day=32})
print(os.date("%Y-%m-%d", t))

เพิ่มเดือนอย่างปลอดภัย

เนื่องจากมีการปรับมาตรฐาน คุณจึงสามารถเพิ่มค่าในฟิลด์ month ให้เกิน 12 ได้ แล้ว Lua จะเลื่อนปีไปข้างหน้า

Month 13 ของ 2025 จะกลายเป็น January 2026 โดยอัตโนมัติ

local t = os.time({year=2025, month=13, day=1})
print(os.date("%Y-%m-%d", t))

ตรวจสอบอย่างรวดเร็ว

นำความรู้เกี่ยวกับการคำนวณ time ไปใช้

สรุป

ค่า time เป็นตัวเลข ดังนั้นคุณจึงใช้ add หรือลบวินาทีเพื่อเลื่อนค่าได้ โดย 1 ชั่วโมงมี 3600 วินาที และ 1 วันมี 86400 วินาที เปรียบเทียบค่า time ได้โดยตรงด้วย > และ <

ใช้ os.difftime เพื่อหาช่วงห่างระหว่าง time สองค่า แล้วหารเพื่อแปลงเป็นชั่วโมงหรือวัน และอย่าลืมว่า os.time จะปรับฟิลด์ของตารางที่อยู่นอกช่วงให้เป็นมาตรฐาน ทำให้การคำนวณปฏิทินเป็นเรื่องง่าย

คำถามที่พบบ่อย

บทเรียน “การคำนวณเวลา” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การคำนวณเวลา” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การคำนวณเวลา”

บวกและเปรียบเทียบเวลา คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การคำนวณเวลา” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม

ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. os.time และ os.date
  2. จัดรูปแบบวันที่
  3. การคำนวณเวลา
  4. วัดระยะเวลา
← กลับไปที่ Lua Academy