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

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

이터널리턴 이스포츠 위키
편집 요약 없음
편집 요약 없음
1번째 줄: 1번째 줄:
local p = {}
local p = {}


-- 생년월일로 나이 계산
function p.calculateAge(frame)
function p.calculateAge(frame)
    -- "birth" 인수를 가져옵니다.
     local birthDate = frame.args[1] -- 템플릿에서 전달된 첫 번째 인수 (출생일)
     local birthDateText = frame:getParent():getArgument("birth")
     if not birthDate or birthDate == "" then
 
         return "날짜 없음" -- 출생일이 제공되지 않은 경우
    -- 입력값이 nil이거나 빈 문자열인 경우 처리
     if not birthDateText or birthDateText == "" then
         return "출생 정보 없음"
     end
     end


    -- 디버깅: 입력값 확인 (MediaWiki 로그에 기록)
     local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%D+(%d+)%D+(%d+)")
    mw.log("Debug: birthDateText = " .. tostring(birthDateText))
     if not birthYear or not birthMonth or not birthDay then
 
         return "잘못된 형식" -- 날짜 형식이 잘못된 경우
    -- 입력값이 YYYYMMDD 형식인지 확인
     local year, month, day = birthDateText:match("^(%d%d%d%d)(%d%d)(%d%d)$")
     if not year or not month or not day then
         return "잘못된 형식입니다. 올바른 형식: YYYYMMDD"
     end
     end


     -- 숫자로 변환
     birthYear = tonumber(birthYear)
    year, month, day = tonumber(year), tonumber(month), tonumber(day)
    birthMonth = tonumber(birthMonth)
    birthDay = tonumber(birthDay)


    -- 현재 날짜 가져오기
     local today = os.date("*t")
     local today = os.date("*t")
     local age = today.year - year
     local age = today.year - birthYear


     -- 생일이 지났는지 확인
     -- 생일이 아직 지나지 않았으면 나이를 1 줄임
     if today.month < month or (today.month == month and today.day < day) then
     if (today.month < birthMonth) or (today.month == birthMonth and today.day < birthDay) then
         age = age - 1
         age = age - 1
     end
     end


     -- 반환 형식: "YYYY년 MM월 DD일 (XX세)"
     -- 한국식 날짜 포맷 변환
     return string.format("%d년 %02d월 %02d일 (%d세)", year, month, day, age)
    local formattedDate = string.format("%d년 %d월 %d일", birthYear, birthMonth, birthDay)
 
    -- 결과 반환: "2009년 7월 1일 (15세)" 형식
     return string.format("%s (%d세)", formattedDate, age)
end
end


return p
return p

2024년 11월 20일 (수) 00:54 판

이 모듈에 대한 설명문서는 모듈: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+)")
    if not birthYear or not birthMonth or not birthDay then
        return "잘못된 형식" -- 날짜 형식이 잘못된 경우
    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

    -- 한국식 날짜 포맷 변환
    local formattedDate = string.format("%d년 %d월 %d일", birthYear, birthMonth, birthDay)

    -- 결과 반환: "2009년 7월 1일 (15세)" 형식
    return string.format("%s (%d세)", formattedDate, age)
end

return p