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

os.time และ os.date

รับเวลาปัจจุบัน

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

เหตุใด time จึงสำคัญ

โปรแกรมมักจำเป็นต้องรู้ time ปัจจุบัน เกมจะบันทึกเวลาที่คุณทำคะแนนได้ ไฟล์บันทึกจะประทับเวลาให้แต่ละเหตุการณ์ และแอปเตือนความจำจะนับถอยหลังไปยังเส้นตาย

Lua เก็บเครื่องมือเกี่ยวกับ time ไว้ในไลบรารี os ที่มีมาให้ในตัว เครื่องมือหลักสองอย่างคือ os.time และ os.date ในบทเรียนนี้คุณจะได้รู้จักทั้งสองอย่าง

os.time คืนค่าเป็นตัวเลข

os.time() ที่ไม่มีอาร์กิวเมนต์จะคืนค่า time ปัจจุบันเป็นตัวเลขเพียงหนึ่งค่า

ตัวเลขนั้นคือจำนวนวินาทีนับจากจุดคงที่ในอดีตจุดหนึ่ง ซึ่งเรียกว่าเอพ็อก ตัวเลขนี้เป็นจำนวนเต็มธรรมดา คุณจึงเก็บ เปรียบเทียบ หรือคำนวณทางคณิตศาสตร์กับมันได้

local now = os.time()
print(now)
print(type(now))

เอพ็อก

ในระบบส่วนใหญ่ เอพ็อกคือเวลาเที่ยงคืนของวันที่ 1 มกราคม 1970 ตามเวลา UTC ดังนั้น os.time() จึงบอกจำนวนวินาทีที่ผ่านไปนับจากเวลานั้น

ตัวเลขขนาดใหญ่อย่าง 1700000000 ถือเป็นเรื่องปกติ ตัวเลขจะเพิ่มขึ้นทีละหนึ่งทุกวินาที จึงเหมาะอย่างยิ่งสำหรับเปรียบเทียบสองช่วงเวลา

local seconds = os.time()
print("Seconds since 1970:", seconds)

os.date คืนค่าเป็นข้อความ

จำนวนวินาทีดิบอ่านได้ยาก os.date() จะแปลง time ให้เป็นข้อความที่อ่านเข้าใจได้ง่าย

เมื่อเรียกใช้โดยไม่มีอาร์กิวเมนต์ ฟังก์ชันจะคืนค่าสตริงที่อธิบาย date และ time ปัจจุบันในรูปแบบที่อ่านง่าย โดยใช้การตั้งค่าท้องถิ่นของระบบ

print(os.date())

os.date พร้อมรูปแบบ

โดยทั่วไปคุณจะส่งสตริงรูปแบบให้ os.date รหัสพิเศษที่ขึ้นต้นด้วย % จะถูกแทนที่ด้วยส่วนต่าง ๆ ของ date

%Y คือปีแบบ 4 หลัก %m คือเดือน และ %d คือวัน ข้อความอื่นจะคงอยู่ตามเดิม

print(os.date("Year: %Y"))
print(os.date("%Y-%m-%d"))

การรวม time และ date

os.date รับอาร์กิวเมนต์ตัวที่สองได้ ซึ่งเป็นตัวเลข time ให้ส่งผลลัพธ์จาก os.time เข้าไป แล้วฟังก์ชันจะแสดง time ณ ช่วงเวลานั้นโดยเฉพาะตามรูปแบบที่กำหนด

หากไม่ส่งอาร์กิวเมนต์ตัวที่สอง ฟังก์ชันจะใช้ time ปัจจุบัน ดังนั้นการเรียกใช้ทั้งสองแบบนี้จึงอธิบายช่วงเวลาเดียวกัน

local t = os.time()
print(os.date("%Y-%m-%d", t))

เวลาท้องถิ่นเทียบกับ UTC

โดยค่าเริ่มต้น os.date จะใช้เขตเวลาท้องถิ่นของคุณ หากต้องการใช้ UTC แทน ให้ขึ้นต้นสตริงรูปแบบด้วยเครื่องหมายอัศเจรีย์ !

เรื่องนี้สำคัญสำหรับเซิร์ฟเวอร์และแอปที่ใช้งานทั่วโลก ซึ่งทุกคนควรยึดนาฬิกาเดียวกัน

print("Local:", os.date("%H:%M"))
print("UTC:  ", os.date("!%H:%M"))

รูปแบบตาราง

หากส่ง "*t" เป็นรูปแบบ os.date จะคืนค่าตารางแทนสตริง

ตารางนี้มีฟิลด์ที่ตั้งชื่อไว้ เช่น year, month, day, hour, min และ sec ซึ่งสะดวกเมื่อต้องการใช้ค่าใดค่าหนึ่งเพียงอย่างเดียว

local d = os.date("*t")
print(d.year, d.month, d.day)
print(d.hour, d.min, d.sec)

การอ่านฟิลด์เดียว

เนื่องจากรูปแบบตารางมีฟิลด์ที่ตั้งชื่อไว้ การดึงเฉพาะเดือนหรือชั่วโมงปัจจุบันจึงทำได้ง่าย

ใช้ !*t สำหรับตารางในรูปแบบ UTC แต่ละฟิลด์เป็นตัวเลขธรรมดาที่คุณนำไปใช้ในเงื่อนไขได้

local d = os.date("*t")
if d.hour < 12 then
  print("Good morning")
else
  print("Good afternoon")
end

os.time จากตาราง

os.time ยังทำงานย้อนกลับได้ด้วย ให้ตารางที่มี year, month และ day แก่ฟังก์ชัน แล้วฟังก์ชันจะคืนค่าจำนวนวินาทีสำหรับ date นั้น

วิธีนี้ช่วยให้คุณสร้างค่า time สำหรับ date ใด ๆ บนปฏิทินที่ต้องการได้

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

การแปลงไปกลับ

คุณสามารถแปลงระหว่างสองรูปแบบได้อย่างอิสระ: os.time แปลงตารางเป็นตัวเลข และ os.date("*t", n) แปลงตัวเลขกลับเป็นตาราง

การแปลงไปกลับนี้เป็นพื้นฐานของการคำนวณเกี่ยวกับ date ซึ่งคุณจะได้เรียนรู้ในบทเรียนถัดไป

local n = os.time({year=2021, month=6, day=15})
local back = os.date("*t", n)
print(back.year, back.month, back.day)

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

ทดสอบความเข้าใจของคุณเกี่ยวกับฟังก์ชันหลักสองอย่าง

สรุปทบทวน

os.time() ให้ค่า time ปัจจุบันเป็นจำนวนวินาทีนับจากเอพ็อก ส่วน os.date() จะแปลง time เป็นข้อความโดยใช้รหัสรูปแบบ % หรือแปลงเป็นตารางด้วย "*t"

เติม ! เพื่อใช้ UTC และส่งตัวเลข time เป็นอาร์กิวเมนต์ตัวที่สองเพื่อจัดรูปแบบช่วงเวลาใดช่วงเวลาหนึ่งโดยเฉพาะ ทั้งสองอย่างนี้ครอบคลุมความต้องการเกี่ยวกับ date แทบทั้งหมดใน Lua

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

บทเรียน “os.time และ os.date” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “os.time และ os.date”

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

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

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

บทเรียน “os.time และ os.date” ใช้เวลานานแค่ไหน

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

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

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

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

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