Zum Inhalt springen

OS-Zeit

Standard-Lua-os-Zeitfunktionen. Liefert echte Wanduhrzeit für Zeitstempel, Datumsformatierung und Zeitberechnungen.

Globale os-Tabelle. Kein require erforderlich.

os.time()
os.date()
os.clock()
os.difftime()

Unix-Zeitstempel abrufen (Sekunden seit 1. Jan 1970 UTC):

-- Aktueller Zeitstempel
local now = os.time() -- 1718462445
-- Spezifisches Datum/Uhrzeit
local t = os.time({
year = 2024,
month = 12,
day = 25,
hour = 10,
min = 30,
sec = 0
})

Signatur: os.time([spec]) -> number

Parameter:

FeldTypStandardBeschreibung
yearnumberaktuelles JahrVierstelliges Jahr (z.B. 2024)
monthnumberaktueller MonatMonat 1-12
daynumberaktueller TagTag des Monats 1-31
hournumber0Stunde 0-23
minnumber0Minute 0-59
secnumber0Sekunde 0-59

Ohne Argumente aufgerufen, gibt den aktuellen Unix-Zeitstempel zurück.

Mit einer Tabelle aufgerufen, verwendet jedes fehlende Feld die oben gezeigten Standards. Die Felder year, month und day verwenden standardmäßig das aktuelle Datum, wenn nicht angegeben.

-- Nur Datum (Uhrzeit standardmäßig Mitternacht)
os.time({year = 2024, month = 6, day = 15})
-- Teilweise (füllt aktuelles Jahr/Monat aus)
os.time({day = 1}) -- erster des aktuellen Monats

Zeitstempel als String formatieren oder Datums-Tabelle zurückgeben:

local now = os.time()

— Standardformat os.date() — “Sat Jun 15 14:30:45 2024”

— Benutzerdefiniertes Format os.date(“%Y-%m-%d”, now) — “2024-06-15” os.date(“%H:%M:%S”, now) — “14:30:45” os.date(“%Y-%m-%dT%H:%M:%S”, now) — “2024-06-15T14:30:45”

— UTC-Zeit (Format mit ! voranstellen) os.date(”!%Y-%m-%d %H:%M:%S”, now) — UTC statt lokal

— Datums-Tabelle local t = os.date(“*t”, now)

Signatur: os.date([format], [timestamp]) -> string | table

ParameterTypStandardBeschreibung
formatstring"%c"Format-String, "*t" für Tabelle
timestampnumberaktuelle ZeitUnix-Zeitstempel zum Formatieren
CodeAusgabeBeispiel
%Y4-stelliges Jahr2024
%y2-stelliges Jahr24
%mMonat (01-12)06
%dTag (01-31)15
%HStunde 24h (00-23)14
%IStunde 12h (01-12)02
%MMinute (00-59)30
%SSekunde (00-59)45
%pAM/PMPM
%AWochentagsnameSaturday
%aWochentag kurzSat
%BMonatsnameJune
%bMonat kurzJun
%wWochentag (0-6, Sonntag=0)6
%jTag des Jahres (001-366)167
%UWochennummer (00-53)24
%zZeitzonenoffset-0700
%ZZeitzonennamePDT
%cVolles Datum/UhrzeitSat Jun 15 14:30:45 2024
%xNur Datum06/15/24
%XNur Uhrzeit14:30:45
%%Literales %%

Wenn Format "*t" ist, gibt eine Tabelle zurück:

local t = os.date("*t")
FeldTypBeschreibungBeispiel
yearnumberVierstelliges Jahr2024
monthnumberMonat (1-12)6
daynumberTag des Monats (1-31)15
hournumberStunde (0-23)14
minnumberMinute (0-59)30
secnumberSekunde (0-59)45
wdaynumberWochentag (1-7, Sonntag=1)7
ydaynumberTag des Jahres (1-366)167
isdstbooleanSommerzeitfalse

Verwenden Sie "!*t" für UTC-Datums-Tabelle.

Sekunden seit Lua-Runtime-Start abrufen:

local start = os.clock()
-- Arbeit ausführen
for i = 1, 1000000 do end
local elapsed = os.clock() - start
print(string.format("Took %.3f seconds", elapsed))

Signatur: os.clock() -> number

Differenz zwischen zwei Zeitstempeln in Sekunden abrufen:

local t1 = os.time({year = 2024, month = 1, day = 1})
local t2 = os.time({year = 2024, month = 12, day = 31})
local diff = os.difftime(t2, t1) -- t2 - t1
local days = diff / 86400
print(days) -- 365

Signatur: os.difftime(t2, t1) -> number

ParameterTypBeschreibung
t2numberSpäterer Zeitstempel
t1numberFrüherer Zeitstempel

Gibt t2 - t1 in Sekunden zurück. Kann negativ sein wenn t1 > t2.

Konstante zur Identifizierung der Laufzeit:

os.platform -- "wippy"