다른 명령
편집 요약 없음 |
편집 요약 없음 |
||
7번째 줄: | 7번째 줄: | ||
end | end | ||
local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%D | -- 생년, 월, 일 추출 (일부 값이 누락될 수 있음) | ||
local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%D*(%d*)%D*(%d*)") | |||
return "정보 없음" -- | birthYear = tonumber(birthYear) | ||
birthMonth = tonumber(birthMonth) or 1 -- 월이 없으면 1월로 기본 설정 | |||
birthDay = tonumber(birthDay) or 1 -- 일이 없으면 1일로 기본 설정 | |||
if not birthYear then | |||
return "정보 없음" -- 생년이 없으면 계산 불가 | |||
end | end | ||
local today = os.date("*t") | local today = os.date("*t") | ||
local age = today.year - birthYear | local age = today.year - birthYear | ||
-- 생일이 아직 지나지 않았으면 나이를 1 줄임 | -- 생일이 아직 지나지 않았으면 나이를 1 줄임 (월, 일이 제공된 경우) | ||
if (today.month < birthMonth) or (today.month == birthMonth and today.day < birthDay) then | if (today.month < birthMonth) or (today.month == birthMonth and today.day < birthDay) then | ||
age = age - 1 | age = age - 1 | ||
25번째 줄: | 26번째 줄: | ||
-- 한국식 날짜 포맷 변환 | -- 한국식 날짜 포맷 변환 | ||
local formattedDate = string.format("%d년 %d월 %d일", birthYear, birthMonth, birthDay) | local formattedDate | ||
if birthMonth and birthDay then | |||
formattedDate = string.format("%d년 %d월 %d일", birthYear, birthMonth, birthDay) | |||
elseif birthMonth then | |||
formattedDate = string.format("%d년 %d월", birthYear, birthMonth) | |||
else | |||
formattedDate = string.format("%d년", birthYear) | |||
end | |||
-- 결과 반환: "2009년 7월 1일 (15세)" 형식 | -- 결과 반환: "2009년 7월 1일 (15세)" 또는 "2009년 (15세)" 형식 | ||
return string.format("%s (%d세)", formattedDate, age) | return string.format("%s (%d세)", formattedDate, age) | ||
end | end | ||
return p | return p |
2024년 12월 5일 (목) 09:24 판
이 모듈에 대한 설명문서는 모듈:AgeCalculator/설명문서에서 만들 수 있습니다
local p = {}
function p.calculateAge(frame)
local birthDate = frame.args[1] -- 템플릿에서 전달된 첫 번째 인수 (출생일)
if not birthDate or birthDate == "" then
return "날짜 없음" -- 출생일이 제공되지 않은 경우
end
-- 생년, 월, 일 추출 (일부 값이 누락될 수 있음)
local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%D*(%d*)%D*(%d*)")
birthYear = tonumber(birthYear)
birthMonth = tonumber(birthMonth) or 1 -- 월이 없으면 1월로 기본 설정
birthDay = tonumber(birthDay) or 1 -- 일이 없으면 1일로 기본 설정
if not birthYear then
return "정보 없음" -- 생년이 없으면 계산 불가
end
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
if birthMonth and birthDay then
formattedDate = string.format("%d년 %d월 %d일", birthYear, birthMonth, birthDay)
elseif birthMonth then
formattedDate = string.format("%d년 %d월", birthYear, birthMonth)
else
formattedDate = string.format("%d년", birthYear)
end
-- 결과 반환: "2009년 7월 1일 (15세)" 또는 "2009년 (15세)" 형식
return string.format("%s (%d세)", formattedDate, age)
end
return p