os.time och os.date
Hämta aktuell tid.
os.time och os.date är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lua Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lua Academy innehåller totalt 4 lektioner.
Varför tid är viktig
Program behöver ofta känna till den aktuella tiden. Ett spel registrerar när du fick poäng, en loggfil tidsstämplar varje händelse och en påminnelseapp räknar ner till en tidsfrist.
Lua samlar sina tidsverktyg i det inbyggda biblioteket os. De två viktigaste funktionerna är os.time och os.date. I den här lektionen får du bekanta dig med båda.
os.time returnerar ett tal
os.time() utan argument returnerar det aktuella ögonblicket som ett enda tal.
Talet anger antalet sekunder sedan en fast tidpunkt i det förflutna, epoken. Det är helt enkelt ett heltal som du kan lagra, jämföra eller använda i beräkningar.
local now = os.time()
print(now)
print(type(now))Epoken
I de flesta system är epoken midnatt den 1 januari 1970 UTC. os.time() anger alltså hur många sekunder som har gått sedan dess.
Ett stort tal som 1700000000 är normalt. Det ökar med ett varje sekund, vilket gör det perfekt för att jämföra två ögonblick.
local seconds = os.time()
print("Seconds since 1970:", seconds)os.date returnerar text
Ett rått antal sekunder är svårt att läsa. os.date() omvandlar tiden till text som är lättare för människor att förstå.
När funktionen anropas utan argument returnerar den en läsbar sträng som beskriver aktuellt datum och aktuell tid enligt systemets lokala inställningar.
print(os.date())os.date med ett format
Vanligtvis skickar du en formatsträng till os.date. Särskilda koder som börjar med % ersätts med delar av datumet.
%Y är det fyrsiffriga året, %m är månaden och %d är dagen. All annan text lämnas oförändrad.
print(os.date("Year: %Y"))
print(os.date("%Y-%m-%d"))Kombinera tid och datum
os.date kan ta ett andra argument: ett tidsvärde. Skicka resultatet från os.time till funktionen så formateras just det ögonblicket.
Utan det andra argumentet används den aktuella tiden, så de här två anropen beskriver samma ögonblick.
local t = os.time()
print(os.date("%Y-%m-%d", t))Lokal tid jämfört med UTC
Som standard använder os.date din lokala tidszon. Om du vill få UTC, alltså universell tid, börjar du formatsträngen med ett utropstecken !.
Detta är viktigt för servrar och appar som används över hela världen, där alla behöver följa samma klocka.
print("Local:", os.date("%H:%M"))
print("UTC: ", os.date("!%H:%M"))Tabellformen
Om du skickar "*t" som format returnerar os.date en tabell i stället för en sträng.
Tabellen har namngivna fält som year, month, day, hour, min och sec. Det är praktiskt när du behöver använda ett enda fält.
local d = os.date("*t")
print(d.year, d.month, d.day)
print(d.hour, d.min, d.sec)Läs ett fält
Eftersom tabellformen ger namngivna fält är det enkelt att hämta bara den aktuella månaden eller bara den aktuella timmen.
Använd !*t för tabellversionen i UTC. Varje fält är ett vanligt tal som du kan använda i villkor.
local d = os.date("*t")
if d.hour < 12 then
print("Good morning")
else
print("Good afternoon")
endos.time från en tabell
os.time fungerar även i omvänd riktning. Ge funktionen en tabell med year, month och day, så returnerar den antalet sekunder för det datumet.
På så sätt kan du skapa ett tidsvärde för vilket specifikt kalenderdatum du vill.
local t = os.time({year=2020, month=1, day=1, hour=0})
print(t)
print(os.date("%Y-%m-%d", t))Tur och retur
Du kan enkelt växla mellan de två formerna: os.time omvandlar en tabell till ett tal och os.date("*t", n) omvandlar ett tal tillbaka till en tabell.
Den här turen och returen är grunden för datumberäkningar, som du kommer att utforska i senare lektioner.
local n = os.time({year=2021, month=6, day=15})
local back = os.date("*t", n)
print(back.year, back.month, back.day)Snabbkontroll
Testa dina kunskaper om de två huvudfunktionerna.
Sammanfattning
os.time() ger det aktuella ögonblicket som ett antal sekunder sedan epoken. os.date() omvandlar tiden till text med formatkoder som innehåller %, eller till en tabell med "*t".
Lägg till ! för UTC och skicka ett tidsvärde som det andra argumentet om du vill formatera ett specifikt ögonblick. Tillsammans täcker de nästan alla behov av datumhantering i Lua.
Lär dig Lua med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 40
- Lektioner
- 159
Vanliga frågor
Är lektionen ”os.time och os.date” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”os.time och os.date”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lua Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”os.time och os.date”?
Hämta aktuell tid. Ni övar på Lua Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Lua Academy?
Du behöver inga förkunskaper. Utbildningen i Lua Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”os.time och os.date”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Lua Academy-lektionen?
Ja. Varje Lua Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- os.time och os.date
- Formatera datum
- Tidaritmetik
- Mät varaktigheter