Lua Academy · Oppitunti

Aikalaskenta

Lisätkää ja vertailkaa kellonaikoja.

Oppitunti 3/413 vaihetta

Aikalaskenta on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.

Aika on vain lukuja

Koska os.time palauttaa pelkän sekuntimäärän, päivämäärälaskenta on enimmäkseen tavallista aritmetiikkaa. Lisäämällä sekunteja siirrytään eteenpäin ja vähentämällä niitä taaksepäin.

Tässä oppitunnissa opitaan siirtämään aikoja, vertailemaan niitä ja laskemaan kahden ajanhetken välinen ero.

Sekunteja minuutissa, tunnissa ja päivässä

Suurempien yksiköiden kanssa työskennellessä on muistettava perusmäärät: minuutissa on 60 sekuntia, tunnissa 3600 sekuntia ja päivässä 86400 sekuntia.

Kertomalla näillä vakioilla mikä tahansa kesto voidaan ilmaista sekunteina.

print("Minute:", 60)
print("Hour:", 60 * 60)
print("Day:", 24 * 60 * 60)

Tunti myöhemmin

Jos halutaan tietää ajanhetki tunnin kuluttua, otetaan os.time() ja lisätään siihen 3600 sekuntia.

Uusi luku välitetään os.date-funktiolle, jotta tulos voidaan nähdä luettavana tekstinä.

local now = os.time()
local later = now + 3600
print(os.date("%H:%M", now))
print(os.date("%H:%M", later))

Eilen ja huomenna

Päivää eteenpäin siirrytään lisäämällä 86400 sekuntia ja päivää taaksepäin vähentämällä sama määrä.

Näin huomisen tai eilisen päivämäärä voidaan laskea nopeasti huolehtimatta kuukauden vaihtumisesta.

local now = os.time()
print("Yesterday:", os.date("%Y-%m-%d", now - 86400))
print("Tomorrow: ", os.date("%Y-%m-%d", now + 86400))

Tietyn päivämäärän muodostaminen

Laskenta voidaan aloittaa kiinteästä päivämäärästä muodostamalla se taulun avulla. Tässä luodaan uudenvuodenpäivä 2025 ja lisätään siihen sitten viikko.

Lisätty aika siirtyy oikein tammikuun 8. päivään.

local start = os.time({year=2025, month=1, day=1})
local week = start + 7 * 86400
print(os.date("%Y-%m-%d", week))

Kahden ajan vertailu

Koska ajat ovat lukuja, tavalliset vertailuoperaattorit toimivat. Suurempi luku tarkoittaa myöhempää ajanhetkeä.

Näin voidaan helposti tarkistaa, onko määräaika ohitettu.

local deadline = os.time({year=2020, month=1, day=1})
local now = os.time()
if now > deadline then
  print("Deadline has passed")
end

Ero sekunteina

Kun yksi aika vähennetään toisesta, tulokseksi saadaan niiden välinen ero sekunteina. Lua tarjoaa myös funktion os.difftime(a, b), joka palauttaa luvun a - b.

os.difftime-funktion käyttäminen on siirrettävä ja suositeltu tapa aikavälin selvittämiseen.

local a = os.time({year=2025, month=1, day=2})
local b = os.time({year=2025, month=1, day=1})
print(os.difftime(a, b))

Sekuntien muuntaminen päiviksi

Pelkkä sekuntiero on suuri, joten jakamalla päästään helpommin käsiteltäviin yksiköihin. Jakakaa sekuntimäärä luvulla 86400, kun haluatte päivät, tai luvulla 3600, kun haluatte tunnit.

Käyttäkää math.floor-funktiota desimaaliosan poistamiseen, kun tarvitsette vain kokonaisia yksiköitä.

local diff = os.difftime(
  os.time({year=2025, month=1, day=11}),
  os.time({year=2025, month=1, day=1}))
print(diff / 86400, "days")

Tapahtumaan jäljellä olevat päivät

Yhdistämällä nämä ideat voitte laskea tulevaan päivämäärään jäljellä olevan ajan. Vähentäkää nykyhetki tavoiteajasta ja muuntakaa sekunnit kokonaisiksi päiviksi.

Tämä toimintamalli on lähtökohtana laskureissa ja muistutussovelluksissa.

local target = os.time({year=2030, month=1, day=1})
local secs = os.difftime(target, os.time())
local days = math.floor(secs / 86400)
print("Days left:", days)

Normalisointi os.time-funktiolla

Kätevä niksi on antaa os.time-funktiolle taulukko, jossa jokin kenttä on sallitun alueen ulkopuolella: funktio korjaa arvon automaattisesti. Tammikuun päivä 32 muuttuu helmikuun 1. päiväksi.

Näin voitte lisätä päiviä kasvattamalla yksinkertaisesti day-kentän arvoa, ja Lua huolehtii kalenterista.

local t = os.time({year=2025, month=1, day=32})
print(os.date("%Y-%m-%d", t))

Kuukauden lisääminen turvallisesti

Normalisoinnin ansiosta voitte kasvattaa month-kentän arvon yli 12:n, jolloin Lua siirtää vuoden automaattisesti eteenpäin.

Vuoden 2025 kuukausi 13 muuttuu automaattisesti tammikuuksi 2026.

local t = os.time({year=2025, month=13, day=1})
print(os.date("%Y-%m-%d", t))

Pikatarkistus

Soveltakaa aika-aritmetiikan tietojanne.

Kertaus

Aika-arvot ovat lukuja, joten voitte siirtää niitä lisäämällä tai vähentämällä sekunteja: tunnissa on 3600 ja päivässä 86400 sekuntia. Verratkaa aikoja suoraan operaattoreilla > ja <.

Käyttäkää os.difftime-funktiota kahden ajan välisen eron laskemiseen ja jakakaa tulos sitten saadaksenne tunnit tai päivät. Muistakaa myös, että os.time normalisoi taulukon sallitun alueen ulkopuoliset kentät, mikä tekee kalenterilaskennasta helppoa.

Aloita maksutta

Opi Lua tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
40
Oppitunnit
159

Usein kysytyt kysymykset

Onko oppitunti ”Aikalaskenta” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “Aikalaskenta”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Aikalaskenta”?

Lisätkää ja vertailkaa kellonaikoja. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Aikalaskenta”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Lua Academy-oppitunnilla?

Kyllä. Jokainen Lua Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. os.time ja os.date
  2. Päivämäärien muotoilu
  3. Aikalaskenta
  4. Kestojen mittaaminen
← Takaisin: Lua Academy