다른 명령
편집 요약 없음 |
편집 요약 없음 |
||
7번째 줄: | 7번째 줄: | ||
end | end | ||
-- 생년, 월, 일 추출 ( | -- 생년, 월, 일 추출 (xx는 무시) | ||
local birthYear, birthMonth, birthDay = birthDate:match("(%d | local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%D*(%d*)%D*(%d*)") | ||
birthYear = tonumber(birthYear) | birthYear = tonumber(birthYear) | ||
birthMonth = tonumber(birthMonth) | birthMonth = tonumber(birthMonth) | ||
20번째 줄: | 20번째 줄: | ||
return "정보 없음" -- 월일 정보가 없으면 | return "정보 없음" -- 월일 정보가 없으면 | ||
end | end | ||
elseif not birthYear then | elseif birthDate:find("xx") then | ||
-- 일부 값에 xx가 포함된 경우 | |||
if not birthYear then | |||
return "정보 없음" | |||
end | |||
-- 나이는 계산하고 출력은 생년만 | |||
local today = os.date("*t") | |||
local age = today.year - birthYear | |||
if birthMonth and birthDay and ((today.month < birthMonth) or (today.month == birthMonth and today.day < birthDay)) then | |||
age = age - 1 | |||
end | |||
return string.format("%d년 (%d세)", birthYear, age) | |||
end | |||
-- 생년, 월, 일이 모두 주어진 경우 처리 | |||
if not birthYear then | |||
return "정보 없음" | |||
end | end | ||
2024년 12월 5일 (목) 09:31 판
이 모듈에 대한 설명문서는 모듈:AgeCalculator/설명문서에서 만들 수 있습니다
local p = {}
function p.calculateAge(frame)
local birthDate = frame.args[1] -- 템플릿에서 전달된 첫 번째 인수 (출생일)
if not birthDate or birthDate == "" then
return "날짜 없음" -- 출생일이 제공되지 않은 경우
end
-- 생년, 월, 일 추출 (xx는 무시)
local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%D*(%d*)%D*(%d*)")
birthYear = tonumber(birthYear)
birthMonth = tonumber(birthMonth)
birthDay = tonumber(birthDay)
if birthDate:find("^xxxx") then
-- 생년이 xxxx로 표시된 경우
if birthMonth and birthDay then
return string.format("%d월 %d일", birthMonth, birthDay)
else
return "정보 없음" -- 월일 정보가 없으면
end
elseif birthDate:find("xx") then
-- 일부 값에 xx가 포함된 경우
if not birthYear then
return "정보 없음"
end
-- 나이는 계산하고 출력은 생년만
local today = os.date("*t")
local age = today.year - birthYear
if birthMonth and birthDay and ((today.month < birthMonth) or (today.month == birthMonth and today.day < birthDay)) then
age = age - 1
end
return string.format("%d년 (%d세)", birthYear, age)
end
-- 생년, 월, 일이 모두 주어진 경우 처리
if not birthYear then
return "정보 없음"
end
birthMonth = birthMonth or 1 -- 월이 없으면 1월로 기본 설정
birthDay = birthDay or 1 -- 일이 없으면 1일로 기본 설정
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
-- 출력 형식
local formattedDate = string.format("%d년 %d월 %d일", birthYear, birthMonth, birthDay)
return string.format("%s (%d세)", formattedDate, age)
end
return p