0Pricing
Lua Academy · Lekcja

os.time i os.date

Pobierze Pan/Pani bieżący czas.

os.time i os.date to bezpłatna lekcja Lua Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Lua Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Lua Academy zawiera 4 lekcji w sumie.

Dlaczego czas ma znaczenie

Programy często muszą znać bieżący czas. Gra zapisuje moment zdobycia wyniku, plik dziennika oznacza czas każdego zdarzenia, a aplikacja przypominająca odlicza czas do terminu.

Lua udostępnia narzędzia do pracy z czasem we wbudowanej bibliotece os. Dwiema najważniejszymi funkcjami są os.time i os.date. W tej lekcji zostaną przedstawione obie.

os.time zwraca liczbę

os.time() wywołane bez argumentów zwraca bieżący moment jako pojedynczą liczbę.

Liczba ta oznacza liczbę sekund, które upłynęły od ustalonego punktu w przeszłości, czyli epoki. Jest zwykłą liczbą całkowitą, więc można ją przechowywać, porównywać i wykonywać na niej obliczenia.

local now = os.time()
print(now)
print(type(now))

Epoka

W większości systemów epoką jest północ 1 stycznia 1970 roku w czasie UTC. Dlatego os.time() informuje, ile sekund upłynęło od tego momentu.

Duża liczba, taka jak 1700000000, jest czymś normalnym. Zwiększa się o jeden co sekundę, dzięki czemu doskonale nadaje się do porównywania dwóch momentów.

local seconds = os.time()
print("Seconds since 1970:", seconds)

os.date zwraca tekst

Surowa liczba sekund jest trudna do odczytania. os.date() przekształca czas w tekst czytelny dla człowieka.

Wywołana bez argumentów zwraca czytelny łańcuch opisujący bieżącą datę i godzinę, zgodnie z lokalnymi ustawieniami systemu.

print(os.date())

os.date z formatem

Zwykle należy przekazać funkcji os.date łańcuch formatu. Specjalne kody zaczynające się od % są zastępowane odpowiednimi częściami daty.

%Y oznacza rok zapisany za pomocą 4 cyfr, %m miesiąc, a %d dzień. Pozostały tekst pozostaje bez zmian.

print(os.date("Year: %Y"))
print(os.date("%Y-%m-%d"))

Łączenie czasu i daty

os.date może przyjąć drugi argument: liczbę reprezentującą czas. Należy przekazać mu wynik działania os.time, aby sformatować dokładnie ten moment.

Bez drugiego argumentu funkcja używa bieżącego czasu, więc te dwa wywołania opisują tę samą chwilę.

local t = os.time()
print(os.date("%Y-%m-%d", t))

Czas lokalny a UTC

Domyślnie os.date używa lokalnej strefy czasowej. Aby uzyskać czas UTC zamiast czasu lokalnego, należy rozpocząć łańcuch formatu od wykrzyknika !.

Ma to znaczenie w przypadku serwerów i aplikacji używanych na całym świecie, gdzie wszyscy powinni korzystać z jednego zegara.

print("Local:", os.date("%H:%M"))
print("UTC:  ", os.date("!%H:%M"))

Forma tabeli

Jeśli jako format zostanie przekazane "*t", os.date zwróci tabelę zamiast łańcucha znaków.

Tabela zawiera nazwane pola, takie jak year, month, day, hour, min i sec. Jest to przydatne, gdy potrzebny jest tylko jeden z tych elementów.

local d = os.date("*t")
print(d.year, d.month, d.day)
print(d.hour, d.min, d.sec)

Odczytywanie jednego pola

Ponieważ forma tabeli udostępnia nazwane pola, pobranie tylko bieżącego miesiąca lub tylko bieżącej godziny jest łatwe.

Dla wersji UTC tabeli należy użyć !*t. Każde pole jest zwykłą liczbą, której można używać w warunkach.

local d = os.date("*t")
if d.hour < 12 then
  print("Good morning")
else
  print("Good afternoon")
end

os.time na podstawie tabeli

os.time działa również odwrotnie. Należy przekazać mu tabelę zawierającą year, month i day, a zwróci liczbę sekund odpowiadającą tej dacie.

Umożliwia to utworzenie wartości czasu dla dowolnej wybranej daty kalendarzowej.

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

Konwersja w obie strony

Można swobodnie przechodzić między obiema postaciami: os.time przekształca tabelę w liczbę, a os.date("*t", n) przekształca liczbę z powrotem w tabelę.

Taka konwersja w obie strony stanowi podstawę obliczeń na datach, które zostaną omówione w późniejszych lekcjach.

local n = os.time({year=2021, month=6, day=15})
local back = os.date("*t", n)
print(back.year, back.month, back.day)

Szybkie sprawdzenie

Proszę sprawdzić zrozumienie dwóch głównych funkcji.

Podsumowanie

os.time() podaje bieżący moment jako liczbę sekund od epoki. os.date() przekształca czas w tekst z użyciem kodów formatu % albo w tabelę za pomocą "*t".

Dodanie ! pozwala uzyskać czas UTC, a przekazanie liczby czasu jako drugiego argumentu umożliwia sformatowanie konkretnego momentu. Razem funkcje te obsługują niemal wszystkie potrzeby związane z datami w Lua.

Często zadawane pytania

Czy lekcja „os.time i os.date” jest bezpłatna?

Tak — pełny tekst „os.time i os.date” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Lua Academy, przejdź na CoddyKit PRO. Kurs Lua Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „os.time i os.date”?

Pobierze Pan/Pani bieżący czas. Ćwiczysz Lua Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Lua Academy?

Nie wymagamy żadnego doświadczenia. Lua Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „os.time i os.date”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Lua Academy?

Tak. Każda lekcja Lua Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. os.time i os.date
  2. Formatowanie dat
  3. Operacje na czasie
  4. Mierzenie czasu trwania
← Powrót do Lua Academy