os.time과 os.date
현재 시간을 가져와 보세요.
os.time과 os.date은(는) CoddyKit의 무료 Lua Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Lua Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
시간이 중요한 이유
프로그램은 현재 time을 알아야 하는 경우가 많습니다. 게임은 점수를 얻은 시점을 기록하고, 로그 파일은 각 이벤트에 시각을 남기며, 알림 앱은 마감 시각까지 남은 시간을 셉니다.
Lua는 내장 os 라이브러리에 time 도구를 모아 두었습니다. 핵심은 os.time과 os.date입니다. 이 lesson에서는 두 가지를 모두 살펴봅니다.
os.time은 숫자를 반환합니다
인수 없이 os.time()을 호출하면 현재 순간을 하나의 숫자로 반환합니다.
이 숫자는 과거의 특정 기준점인 epoch 이후 흐른 초의 개수입니다. 단순한 정수이므로 저장하거나 비교하거나 계산에 사용할 수 있습니다.
local now = os.time()
print(now)
print(type(now))Epoch
대부분의 시스템에서 epoch는 1970년 1월 1일 자정(UTC)입니다. 따라서 os.time()은 그때부터 몇 초가 지났는지 알려 줍니다.
1700000000 같은 큰 숫자도 정상입니다. 매초 1씩 증가하므로 두 순간을 비교하기에 아주 적합합니다.
local seconds = os.time()
print("Seconds since 1970:", seconds)os.date는 텍스트를 반환합니다
가공되지 않은 초의 개수는 읽기 어렵습니다. os.date()는 time을 사람이 읽기 쉬운 텍스트로 바꿉니다.
인수 없이 호출하면 시스템의 지역 설정을 사용해 현재 date와 time을 설명하는 읽기 쉬운 문자열을 반환합니다.
print(os.date())형식과 함께 사용하는 os.date
보통 os.date에 형식 문자열을 전달합니다. %로 시작하는 특수 코드는 date의 각 부분으로 바뀝니다.
%Y는 네 자리 연도, %m은 월, %d는 일을 나타냅니다. 그 밖의 텍스트는 그대로 유지됩니다.
print(os.date("Year: %Y"))
print(os.date("%Y-%m-%d"))time과 date 결합하기
os.date에는 두 번째 인수로 time 숫자를 전달할 수도 있습니다. os.time의 결과를 전달하면 정확히 그 순간을 형식에 맞춰 표시합니다.
두 번째 인수가 없으면 현재 time을 사용하므로, 다음 두 호출은 같은 순간을 나타냅니다.
local t = os.time()
print(os.date("%Y-%m-%d", t))현지 시간과 UTC 비교
기본적으로 os.date는 현지 시간대를 사용합니다. 대신 UTC(세계 표준 시간)를 얻으려면 형식 문자열을 느낌표 !로 시작하세요.
이는 서버와 전 세계에서 사용하는 앱에서 중요합니다. 어디서나 하나의 시계를 기준으로 일치시켜야 하기 때문입니다.
print("Local:", os.date("%H:%M"))
print("UTC: ", os.date("!%H:%M"))테이블 형식
형식으로 "*t"를 전달하면 os.date는 문자열 대신 테이블을 반환합니다.
이 테이블에는 year, month, day, hour, min, sec 같은 이름이 지정된 필드가 있습니다. 특정 한 부분만 필요할 때 편리합니다.
local d = os.date("*t")
print(d.year, d.month, d.day)
print(d.hour, d.min, d.sec)필드 하나 읽기
테이블 형식에서는 이름이 지정된 필드를 제공하므로 현재 월이나 현재 시만 간단히 가져올 수 있습니다.
UTC 버전의 테이블을 사용하려면 !*t를 사용하세요. 각 필드는 조건문에서 사용할 수 있는 일반 숫자입니다.
local d = os.date("*t")
if d.hour < 12 then
print("Good morning")
else
print("Good afternoon")
end테이블에서 os.time 만들기
os.time은 반대 방향으로도 작동합니다. year, month, day가 있는 테이블을 전달하면 해당 date의 초 개수를 반환합니다.
이를 이용하면 원하는 특정 calendar date의 time 값을 만들 수 있습니다.
local t = os.time({year=2020, month=1, day=1, hour=0})
print(t)
print(os.date("%Y-%m-%d", t))왕복 변환
두 형식 사이를 자유롭게 오갈 수 있습니다. os.time은 테이블을 숫자로 바꾸고, os.date("*t", n)은 숫자를 다시 테이블로 바꿉니다.
이 왕복 변환은 date 계산의 기반이며, 이후 lesson에서 더 자세히 살펴봅니다.
local n = os.time({year=2021, month=6, day=15})
local back = os.date("*t", n)
print(back.year, back.month, back.day)빠른 확인
두 가지 주요 함수에 대한 이해도를 확인해 보세요.
복습
os.time()은 epoch 이후 흐른 초의 개수로 현재 순간을 나타냅니다. os.date()는 % 형식 코드를 사용해 time을 텍스트로 바꾸거나, "*t"를 사용해 테이블로 바꿉니다.
UTC에는 !를 추가하고, 특정 순간을 형식화하려면 두 번째 인수로 time 숫자를 전달하세요. 이 기능들을 함께 사용하면 Lua에서 필요한 거의 모든 date 작업을 처리할 수 있습니다.
자주 묻는 질문
“os.time과 os.date” 강의는 무료인가요?
네 — “os.time과 os.date” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Lua Academy 강의 전체를 잠금 해제할 수 있습니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“os.time과 os.date”에서 뭘 배우나요?
현재 시간을 가져와 보세요. 브라우저에서 직접 실행하는 실습 코드로 Lua Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Lua Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Lua Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“os.time과 os.date” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Lua Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Lua Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.