Lua Academy · Lektion

os.time och os.date

Hämta aktuell tid.

Lektion 1 av 413 steg

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")
end

os.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.

Gratis att börja

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

  1. os.time och os.date
  2. Formatera datum
  3. Tidaritmetik
  4. Mät varaktigheter
← Tillbaka till Lua Academy