본문으로 건너뛰기
🛠️ToolsShed

계절 계산기

날짜와 반구에 따른 현재 기상학적 계절을 찾습니다.

❄️

Winter

12, 1, 2

🌸

Spring

3, 4, 5

☀️

Summer

6, 7, 8

🍂

Autumn

9, 10, 11

이 도구 소개

계절은 지구가 태양 주위를 공전할 때 23.5° 축기울기로 인해 발생하는 자연적인 기후 패턴의 주기입니다. 온대 지역에서 특히 중요하며, 야외 활동 계획, 날씨 예측, 계절 동향 추적, 기후 패턴 연구 등 많은 상황에서 유용합니다. 하지만 특정 날짜가 어느 계절에 속하는지 정확히 판단하려면 기상학적 계절의 정의를 이해해야 합니다.

이 도구는 입력한 날짜에 대해 북반구 또는 남반구 중 선택한 지역의 계절을 계산합니다. 날짜와 반구를 선택한 후 "Find Season"을 클릭하면 해당 계절의 이름, 시작 및 종료 날짜, 계절 시작 이후 경과일수, 남은 일수를 확인할 수 있습니다. 결과에는 각 계절을 나타내는 이모지가 포함된 시각적 요약 카드가 함께 표시됩니다.

기상학적 계절은 달력의 월을 기준으로 정의됩니다(북반구: 봄 3월~5월, 여름 6월~8월, 가을 9월~11월, 겨울 12월~2월). 이는 춘분, 하지, 추분, 동지 같은 천문학적 기준을 사용하는 것보다 훨씬 단순하고 일관성이 있습니다. 이 도구는 기상 예보관, 교육자, 학생, 반대 반구로 여행을 계획하는 여행객, 그리고 계절 시기에 관심 있는 모든 사람에게 유용합니다.

자주 묻는 질문

코드 구현

from datetime import date

def get_meteorological_season(month: int, hemisphere: str = "northern") -> str:
    """Get meteorological season for a given month."""
    northern = {
        12: "Winter", 1: "Winter", 2: "Winter",
        3: "Spring", 4: "Spring", 5: "Spring",
        6: "Summer", 7: "Summer", 8: "Summer",
        9: "Autumn", 10: "Autumn", 11: "Autumn",
    }
    southern = {
        12: "Summer", 1: "Summer", 2: "Summer",
        3: "Autumn", 4: "Autumn", 5: "Autumn",
        6: "Winter", 7: "Winter", 8: "Winter",
        9: "Spring", 10: "Spring", 11: "Spring",
    }
    if hemisphere.lower() == "southern":
        return southern[month]
    return northern[month]

def season_dates(month: int, year: int, hemisphere: str = "northern") -> dict:
    """Get season start/end dates for the given month."""
    season = get_meteorological_season(month, hemisphere)
    if hemisphere.lower() == "southern":
        starts = {"Summer": 12, "Autumn": 3, "Winter": 6, "Spring": 9}
    else:
        starts = {"Spring": 3, "Summer": 6, "Autumn": 9, "Winter": 12}

    start_month = starts[season]
    start_year = year if start_month <= month else year - 1
    start = date(start_year, start_month, 1)
    end_month = (start_month + 2) % 12 + 1
    end_year = start_year + (1 if start_month + 2 > 12 else 0)
    import calendar
    end_day = calendar.monthrange(end_year, end_month)[1]
    end = date(end_year, end_month, end_day)
    return {"season": season, "start": start.isoformat(), "end": end.isoformat()}

today = date.today()
info = season_dates(today.month, today.year)
print(f"Season: {info['season']} ({info['start']} to {info['end']})")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.