os.time og os.date
Hent det aktuelle tidspunkt.
os.time og os.date er en gratis Lua Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lua Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lua Academy-kurset indeholder 4 lektioner i alt.
Hvorfor tid er vigtig
Programmer har ofte brug for at kende det aktuelle tidspunkt. Et spil registrerer, hvornår du scorede, en logfil tilføjer et tidsstempel til hver hændelse, og en påmindelsesapp tæller ned til en frist.
Lua har sine tidsværktøjer i det indbyggede os-bibliotek. De to vigtigste er os.time og os.date. I denne lektion møder du dem begge.
os.time returnerer et tal
os.time() uden argumenter returnerer det aktuelle tidspunkt som et enkelt tal.
Tallet er antallet af sekunder siden et fast tidspunkt i fortiden, nemlig epoken. Det er blot et heltal, så du kan gemme det, sammenligne det eller regne med det.
local now = os.time()
print(now)
print(type(now))Epoken
På de fleste systemer er epoken midnat den 1. januar 1970 i UTC. Derfor fortæller os.time() dig, hvor mange sekunder der er gået siden da.
Et stort tal som 1700000000 er helt normalt. Det vokser med én hvert sekund, hvilket gør det velegnet til at sammenligne to tidspunkter.
local seconds = os.time()
print("Seconds since 1970:", seconds)os.date returnerer tekst
Et råt antal sekunder er svært at læse. os.date() omdanner tid til letlæselig tekst.
Når funktionen kaldes uden argumenter, returnerer den en læsbar streng, der beskriver den aktuelle dato og tid ud fra systemets lokale indstillinger.
print(os.date())os.date med et format
Du giver normalt os.date en formatstreng. Særlige koder, der begynder med %, erstattes med dele af datoen.
%Y er året med fire cifre, %m er måneden, og %d er dagen. Al anden tekst forbliver uændret.
print(os.date("Year: %Y"))
print(os.date("%Y-%m-%d"))Kombinér tid og dato
os.date kan tage et andet argument: et tidsnummer. Giv den resultatet af os.time, så formaterer den netop det tidspunkt.
Uden det andet argument bruger den det aktuelle tidspunkt, så disse to kald beskriver samme øjeblik.
local t = os.time()
print(os.date("%Y-%m-%d", t))Lokal tid kontra UTC
Som standard bruger os.date din lokale tidszone. Hvis du i stedet vil have UTC, skal du begynde formatstrengen med et udråbstegn !.
Det er vigtigt for servere og apps, der bruges over hele verden, hvor alle bør følge det samme ur.
print("Local:", os.date("%H:%M"))
print("UTC: ", os.date("!%H:%M"))Tabelformen
Hvis du giver "*t" som format, returnerer os.date en tabel i stedet for en streng.
Tabellen har navngivne felter som year, month, day, hour, min og sec. Det er praktisk, når du kun har brug for ét felt.
local d = os.date("*t")
print(d.year, d.month, d.day)
print(d.hour, d.min, d.sec)Læs ét felt
Da tabelformen giver navngivne felter, er det nemt kun at hente den aktuelle måned eller den aktuelle time.
Brug !*t for tabellen i UTC. Hvert felt er et almindeligt tal, som du kan bruge i betingelser.
local d = os.date("*t")
if d.hour < 12 then
print("Good morning")
else
print("Good afternoon")
endos.time fra en tabel
os.time fungerer også den modsatte vej. Giv den en tabel med year, month og day, så returnerer den antallet af sekunder for den dato.
På den måde kan du oprette en tidsværdi for en hvilken som helst kalenderdato, du vælger.
local t = os.time({year=2020, month=1, day=1, hour=0})
print(t)
print(os.date("%Y-%m-%d", t))Frem og tilbage
Du kan frit skifte mellem de to former: os.time omdanner en tabel til et tal, og os.date("*t", n) omdanner et tal tilbage til en tabel.
Denne konvertering frem og tilbage er grundlaget for datoberegninger, som du udforsker i senere lektioner.
local n = os.time({year=2021, month=6, day=15})
local back = os.date("*t", n)
print(back.year, back.month, back.day)Hurtig kontrol
Test din forståelse af de to vigtigste funktioner.
Opsamling
os.time() giver det aktuelle tidspunkt som et antal sekunder siden epoken. os.date() omdanner tid til tekst ved hjælp af formatkoder med % eller til en tabel med "*t".
Tilføj ! for UTC, og giv et tidsnummer som det andet argument for at formatere et bestemt øjeblik. Tilsammen dækker de næsten alle behov for datoer i Lua.
Lær Lua med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 40
- Lektioner
- 159
Ofte stillede spørgsmål
Er lektionen “os.time og os.date” gratis?
Ja — alle 3 lektioner i læringssporet Lua Academy, inklusive “os.time og os.date”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lua Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “os.time og os.date”?
Hent det aktuelle tidspunkt. Du øver dig i Lua Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Lua Academy?
Der kræves ingen tidligere erfaring. Lua Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “os.time og os.date”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Lua Academy-lektion?
Ja. Alle Lua Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- os.time og os.date
- Formatér datoer
- Tidsaritmetik
- Mål varigheder