메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

모듈:AgeCalculator: 두 판 사이의 차이

이터널리턴 이스포츠 위키
새 문서: 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 birthDateText = frame:getParent():getArgument("출생")
     local birthDate = frame.args[1] -- 템플릿에서 전달된 첫 번째 인수 (출생일)
     if not birthDateText then
     if not birthDate or birthDate == "" then
         return "출생 정보 없음"
         return "날짜 없음" -- 출생일이 제공되지 않은 경우
     end
     end


     -- 날짜를 추출 (xxxx년 xx월 xx일 형식)
     -- 입력 형식 구분
    local year, month, day = birthDateText:match("(%d+)(%d+)(%d+)")
    if birthDate:match("^%d%d%d%d%-%d%d%-%d%d$") then
    if not year or not month or not day then
        -- 완전한 날짜 형식 (예: 2002-01-01)
         return birthDateText -- 날짜 형식이 맞지 않으면 그대로 반환
        local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%-(%d+)%-(%d+)")
    end
        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


    year, month, day = tonumber(year), tonumber(month), tonumber(day)
        -- 출력
        return string.format("%d년 (%d세)", birthYear, age)


     -- 현재 날짜
     elseif birthDate:match("^%d%d%-%d%d$") then
    local today = os.date("*t")
        -- 월일만 제공된 경우 (예: 01-01)
    local age = today.year - year
        local birthMonth, birthDay = birthDate:match("(%d+)%-(%d+)")
        birthMonth = tonumber(birthMonth)
        birthDay = tonumber(birthDay)


    -- 생일이 지났는지 확인
        -- 출력
    if today.month < month or (today.month == month and today.day < day) then
        return string.format("%d월 %d일", birthMonth, birthDay)
         age = age - 1
    else
         -- 올바르지 않은 입력 형식
        return "정보 없음"
     end
     end
    -- 반환 형식
    return string.format("%d년 %02d월 %02d일 (%d세)", year, month, day, age)
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