OS-Zeit

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

Laden

Globale os-Tabelle. Kein require erforderlich.

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

Zeitstempel abrufen

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]) -> integer

Parameter:

Feld Typ Standard Beschreibung
year integer aktuelles Jahr Vierstelliges Jahr (z.B. 2024)
month integer aktueller Monat Monat 1-12
day integer aktueller Tag Tag des Monats 1-31
hour integer 0 Stunde 0-23
min integer 0 Minute 0-59
sec integer 0 Sekunde 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

Datum formatieren

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

Parameter Typ Standard Beschreibung
format string "%c" Format-String, "*t" für Tabelle
timestamp integer aktuelle Zeit Unix-Zeitstempel zum Formatieren

Format-Spezifikatoren

Code Ausgabe Beispiel
%Y 4-stelliges Jahr 2024
%y 2-stelliges Jahr 24
%m Monat (01-12) 06
%d Tag (01-31) 15
%H Stunde 24h (00-23) 14
%I Stunde 12h (01-12) 02
%M Minute (00-59) 30
%S Sekunde (00-59) 45
%p AM/PM PM
%A Wochentagsname Saturday
%a Wochentag kurz Sat
%B Monatsname June
%b Monat kurz Jun
%w Wochentag (0-6, Sonntag=0) 6
%j Tag des Jahres (001-366) 167
%U Wochennummer (00-53) 24
%z Zeitzonenoffset -0700
%Z Zeitzonenname PDT
%c Volles Datum/Uhrzeit Sat Jun 15 14:30:45 2024
%x Nur Datum 06/15/24
%X Nur Uhrzeit 14:30:45
%% Literales % %

Datums-Tabelle

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

local t = os.date("*t")
Feld Typ Beschreibung Beispiel
year integer Vierstelliges Jahr 2024
month integer Monat (1-12) 6
day integer Tag des Monats (1-31) 15
hour integer Stunde (0-23) 14
min integer Minute (0-59) 30
sec integer Sekunde (0-59) 45
wday integer Wochentag (1-7, Sonntag=1) 7
yday integer Tag des Jahres (1-366) 167
isdst boolean Sommerzeit false

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

Verstrichene Zeit messen

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

Zeitdifferenz

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

Parameter Typ Beschreibung
t2 integer Späterer Zeitstempel
t1 integer Früherer Zeitstempel

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

Plattform-Konstante

Konstante zur Identifizierung der Laufzeit:

os.platform  -- "wippy"