os.time e os.date
Ottenga l'ora corrente.
os.time e os.date è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.
Perché il tempo è importante
I programmi spesso devono conoscere il momento corrente. Un gioco registra quando ha ottenuto un punteggio, un file di log assegna un timestamp a ogni evento e un'app per i promemoria conta alla rovescia fino a una scadenza.
Lua raccoglie gli strumenti per gestire il tempo nella libreria integrata os. Le due funzioni principali sono os.time e os.date. In questa lezione le conoscerà entrambe.
os.time restituisce un numero
os.time(), chiamato senza argomenti, restituisce il momento corrente come un unico numero.
Questo numero rappresenta il conteggio dei secondi trascorsi da un punto fisso nel passato, l'epoca. È semplicemente un intero, quindi può memorizzarlo, confrontarlo o utilizzarlo nei calcoli.
local now = os.time()
print(now)
print(type(now))L'epoca
Nella maggior parte dei sistemi, l'epoca corrisponde alla mezzanotte del 1° gennaio 1970 UTC. Quindi os.time() indica quanti secondi sono trascorsi da allora.
Un numero grande come 1700000000 è normale. Aumenta di uno ogni secondo, il che lo rende perfetto per confrontare due momenti.
local seconds = os.time()
print("Seconds since 1970:", seconds)os.date restituisce testo
Un semplice conteggio di secondi è difficile da leggere. os.date() trasforma il tempo in testo comprensibile.
Chiamato senza argomenti, restituisce una stringa leggibile che descrive la data e l'ora correnti, usando le impostazioni locali del sistema.
print(os.date())os.date con un formato
Di solito si passa a os.date una stringa di formato. I codici speciali che iniziano con % vengono sostituiti con le parti corrispondenti della data.
%Y indica l'anno a 4 cifre, %m il mese e %d il giorno. Gli altri testi restano invariati.
print(os.date("Year: %Y"))
print(os.date("%Y-%m-%d"))Combinare tempo e data
os.date può ricevere un secondo argomento: un numero che rappresenta un momento. Gli passi il risultato di os.time per formattare esattamente quell'istante.
Senza il secondo argomento utilizza l'ora corrente, quindi queste due chiamate descrivono lo stesso istante.
local t = os.time()
print(os.date("%Y-%m-%d", t))Locale e UTC
Per impostazione predefinita, os.date utilizza il fuso orario locale. Per ottenere invece l'ora UTC, inizi la stringa di formato con un punto esclamativo !.
Questo è importante per i server e le app utilizzati in tutto il mondo, dove tutti devono fare riferimento allo stesso orologio.
print("Local:", os.date("%H:%M"))
print("UTC: ", os.date("!%H:%M"))La forma tabella
Se passa "*t" come formato, os.date restituisce una tabella anziché una stringa.
La tabella contiene campi denominati come year, month, day, hour, min e sec. È utile quando le serve un singolo componente.
local d = os.date("*t")
print(d.year, d.month, d.day)
print(d.hour, d.min, d.sec)Leggere un campo
Poiché la forma tabella fornisce campi denominati, recuperare solo il mese o solo l'ora correnti è semplice.
Utilizzi !*t per ottenere la versione UTC della tabella. Ogni campo è un semplice numero che può usare nelle condizioni.
local d = os.date("*t")
if d.hour < 12 then
print("Good morning")
else
print("Good afternoon")
endos.time da una tabella
os.time funziona anche al contrario. Gli passi una tabella con year, month e day e restituisce il conteggio dei secondi relativo a quella data.
In questo modo può creare un valore temporale per qualsiasi data specifica del calendario.
local t = os.time({year=2020, month=1, day=1, hour=0})
print(t)
print(os.date("%Y-%m-%d", t))Andata e ritorno
Può passare liberamente da una forma all'altra: os.time trasforma una tabella in un numero, mentre os.date("*t", n) trasforma nuovamente un numero in una tabella.
Questo percorso di andata e ritorno è la base per i calcoli sulle date, che esplorerà nelle lezioni successive.
local n = os.time({year=2021, month=6, day=15})
local back = os.date("*t", n)
print(back.year, back.month, back.day)Controllo rapido
Verifichi la sua comprensione delle due funzioni principali.
Riepilogo
os.time() fornisce il momento corrente come numero di secondi trascorsi dall'epoca. os.date() trasforma il tempo in testo usando i codici di formato %, oppure in una tabella con "*t".
Aggiunga ! per ottenere l'ora UTC e passi un numero temporale come secondo argomento per formattare un istante specifico. Insieme, queste funzioni coprono quasi tutte le esigenze relative alle date in Lua.
Domande Frequenti
La lezione «os.time e os.date» è gratuita?
Sì — il testo completo di «os.time e os.date» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.
Cosa imparerò in «os.time e os.date»?
Ottenga l'ora corrente. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Lua Academy?
Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «os.time e os.date»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Lua Academy?
Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- os.time e os.date
- Formattazione delle date
- Aritmetica del tempo
- Misurare le durate