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

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

이터널리턴 이스포츠 위키
편집 요약 없음
편집 요약 없음
7번째 줄: 7번째 줄:
     end
     end


     -- 생년, 월, 일 추출 (일부 값이 누락될 수 있음)
     -- 생년, 월, 일 추출 (xx는 무시)
     local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%D*(%d*)%D*(%d*)")
     local birthYear, birthMonth, birthDay = birthDate:match("(%d+)%D*(%d*)%D*(%d*)")
     birthYear = tonumber(birthYear)
     birthYear = tonumber(birthYear)
     birthMonth = tonumber(birthMonth) or 1 -- 월이 없으면 1월로 기본 설정
     birthMonth = tonumber(birthMonth) or 1 -- 월이 없거나 xx인 경우 1월로 기본 설정
     birthDay = tonumber(birthDay) or 1 -- 일이 없으면 1일로 기본 설정
     birthDay = tonumber(birthDay) or 1 -- 일이 없거나 xx인 경우 1일로 기본 설정


     if not birthYear then
     if not birthYear then
20번째 줄: 20번째 줄:
     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
     end
     end


     -- 한국식 날짜 포맷 변환
     -- 출력 형식
    local formattedDate
     if birthDate:find("xx") then
     if birthMonth and birthDay then
        -- 일부 값이 xx로 표시된 경우 간단한 형식
        formattedDate = string.format("%d년 %d월 %d일", birthYear, birthMonth, birthDay)
         return string.format("%d년 (%d세)", birthYear, age)
    elseif birthMonth then
         formattedDate = string.format("%d년 %d월", birthYear, birthMonth)
     else
     else
         formattedDate = string.format("%d년", birthYear)
         -- 전체 날짜가 있는 경우
        local formattedDate = string.format("%d년 %d월 %d일", birthYear, birthMonth, birthDay)
        return string.format("%s (%d세)", formattedDate, age)
     end
     end
    -- 결과 반환: "2009년 7월 1일 (15세)" 또는 "2009년 (15세)" 형식
    return string.format("%s (%d세)", formattedDate, age)
end
end


return p
return p

2024년 12월 5일 (목) 09:26 판

이 모듈에 대한 설명문서는 모듈: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) or 1 -- 월이 없거나 xx인 경우 1월로 기본 설정
    birthDay = tonumber(birthDay) or 1 -- 일이 없거나 xx인 경우 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

    -- 출력 형식
    if birthDate:find("xx") then
        -- 일부 값이 xx로 표시된 경우 간단한 형식
        return string.format("%d년 (%d세)", birthYear, age)
    else
        -- 전체 날짜가 있는 경우
        local formattedDate = string.format("%d년 %d월 %d일", birthYear, birthMonth, birthDay)
        return string.format("%s (%d세)", formattedDate, age)
    end
end

return p