다른 명령
새 문서: local p = {} -- 생년월일로 나이 계산 function p.calculateAge(frame) local birthDateText = frame:getParent():getArgument("출생") if not birthDateText then return "출생 정보 없음" end -- 날짜를 추출 (xxxx년 xx월 xx일 형식) local year, month, day = birthDateText:match("(%d+)년 (%d+)월 (%d+)일") if not year or not month or not day then return birthDateText -- 날짜 형식이 맞지 않으면 그대로 반환... |
편집 요약 없음 |
||
(같은 사용자의 중간 판 15개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
local p = {} | local p = {} | ||
function p.calculateAge(frame) | function p.calculateAge(frame) | ||
local | local birthDate = frame.args[1] -- 템플릿에서 전달된 첫 번째 인수 (출생일) | ||
if not | if not birthDate or birthDate == "" then | ||
return " | return "날짜 없음" -- 출생일이 제공되지 않은 경우 | ||
end | end | ||
-- | -- 입력 형식 구분 | ||
if birthDate:match("^%d%d%d%d%-%d%d%-%d%d$") then | |||
-- 완전한 날짜 형식 (예: 2002-01-01) | |||
return | local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%-(%d+)%-(%d+)") | ||
birthYear = tonumber(birthYear) | |||
birthMonth = tonumber(birthMonth) | |||
birthDay = tonumber(birthDay) | |||
local today = os.date("*t") | |||
local age = today.year - birthYear | |||
-- 생일이 아직 지나지 않았으면 나이를 1 줄임 | |||
if (today.month < birthMonth) or (today.month == birthMonth and today.day < birthDay) then | |||
age = age - 1 | |||
end | |||
-- 출력 | |||
return string.format("%d년 %d월 %d일 (%d세)", birthYear, birthMonth, birthDay, age) | |||
elseif birthDate:match("^%d%d%d%d$") then | |||
-- 생년만 제공된 경우 (예: 2002) | |||
local birthYear = tonumber(birthDate) | |||
local today = os.date("*t") | |||
local age = today.year - birthYear | |||
-- 출력 | |||
return string.format("%d년 (%d세)", birthYear, age) | |||
-- | elseif birthDate:match("^%d%d%-%d%d$") then | ||
-- 월일만 제공된 경우 (예: 01-01) | |||
local birthMonth, birthDay = birthDate:match("(%d+)%-(%d+)") | |||
birthMonth = tonumber(birthMonth) | |||
birthDay = tonumber(birthDay) | |||
-- 출력 | |||
return string.format("%d월 %d일", birthMonth, birthDay) | |||
else | |||
-- 올바르지 않은 입력 형식 | |||
return "정보 없음" | |||
end | end | ||
end | end | ||
return p | return p |
2024년 12월 5일 (목) 09:35 기준 최신판
이 모듈에 대한 설명문서는 모듈:AgeCalculator/설명문서에서 만들 수 있습니다
local p = {}
function p.calculateAge(frame)
local birthDate = frame.args[1] -- 템플릿에서 전달된 첫 번째 인수 (출생일)
if not birthDate or birthDate == "" then
return "날짜 없음" -- 출생일이 제공되지 않은 경우
end
-- 입력 형식 구분
if birthDate:match("^%d%d%d%d%-%d%d%-%d%d$") then
-- 완전한 날짜 형식 (예: 2002-01-01)
local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%-(%d+)%-(%d+)")
birthYear = tonumber(birthYear)
birthMonth = tonumber(birthMonth)
birthDay = tonumber(birthDay)
local today = os.date("*t")
local age = today.year - birthYear
-- 생일이 아직 지나지 않았으면 나이를 1 줄임
if (today.month < birthMonth) or (today.month == birthMonth and today.day < birthDay) then
age = age - 1
end
-- 출력
return string.format("%d년 %d월 %d일 (%d세)", birthYear, birthMonth, birthDay, age)
elseif birthDate:match("^%d%d%d%d$") then
-- 생년만 제공된 경우 (예: 2002)
local birthYear = tonumber(birthDate)
local today = os.date("*t")
local age = today.year - birthYear
-- 출력
return string.format("%d년 (%d세)", birthYear, age)
elseif birthDate:match("^%d%d%-%d%d$") then
-- 월일만 제공된 경우 (예: 01-01)
local birthMonth, birthDay = birthDate:match("(%d+)%-(%d+)")
birthMonth = tonumber(birthMonth)
birthDay = tonumber(birthDay)
-- 출력
return string.format("%d월 %d일", birthMonth, birthDay)
else
-- 올바르지 않은 입력 형식
return "정보 없음"
end
end
return p