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")
endos.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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- os.time และ os.date
- จัดรูปแบบวันที่
- การคำนวณเวลา
- วัดระยะเวลา