본문 바로가기
코딩취미/Python

음력일과 D-Day 계산하는 코드 만들기 + 날짜/시간 확인

by 브링블링 2024. 7. 15.
반응형

음력일과 D-Day 계산하는 코드 만들기 + 날짜/시간 확인

음력일과 D-Day를 계산하는 코드를 만들기 위해서 파이썬 모듈을 사용합니다. 필요한 모듈은 "lunarcalendar"와 "datetime" 모듈입니다. 아래에서는 이 두가지 모듈을 사용해서 음력 계산과 D-Day 계산에 필요한 코드를 만들고 사용된 모듈에 대해서 설명합니다.

 

[ 사용모듈 설명 ]

1. lunarcalendar

lunarcalendar는 Python에서 음력(태음력)과 양력(태양력)을 변환하고, 날짜 정보를 다루기 위한 라이브러리입니다. 이 라이브러리를 사용하면 양력 날짜를 음력 날짜로 변환하거나, 음력 날짜를 양력 날짜로 변환할 수 있습니다. 또한, 음력과 관련된 다양한 날짜 정보를 쉽게 처리할 수 있습니다.

 

  • Lunar.fromSolarDate(year, month, day): 지정된 양력 날짜를 음력 날짜로 변환합니다.
  • Lunar.toSolarDate(): 음력 날짜를 양력 날짜로 변환합니다.
  • Lunar(year, month, day, isleap): 음력 날짜 객체를 생성합니다.
    • year: 음력 연도
    • month: 음력 월
    • day: 음력 일
    • isleap: 윤달 여부 (True 또는 False)
pip install lunarcalendar
import lunarcalendar
from datetime import datetime

# 현재 날짜와 시간 확인
now = datetime.now()

# 현재 날짜의 음력 일자 확인
lunar_date = lunarcalendar.Lunar.fromSolarDate(now.year, now.month, now.day)
print(f"양력 {now.strftime('%Y-%m-%d')} -> 음력 {lunar_date}")

# 음력 날짜를 양력 날짜로 변환
solar_date = lunar_date.toSolarDate()
print(f"음력 {lunar_date} -> 양력 {solar_date}")

2. datetime

datetime 모듈은 Python에서 날짜와 시간 정보를 처리하기 위한 표준 라이브러리입니다. 이 모듈은 날짜와 시간에 대한 다양한 작업을 수행할 수 있는 기능을 제공합니다. 여기에는 날짜와 시간의 생성, 형식 지정, 연산 등이 포함됩니다. 

 

 

  • datetime.date:
    • 날짜 정보를 나타내는 클래스입니다.
    • 연도(year), 월(month), 일(day)을 속성으로 가집니다.
    • 예: date(2024, 7, 15)
  • datetime.time:
    • 시간 정보를 나타내는 클래스입니다.
    • 시(hour), 분(minute), 초(second), 마이크로초(microsecond)를 속성으로 가집니다.
    • 예: time(14, 30, 0)
  • datetime.datetime:
    • 날짜와 시간 정보를 모두 나타내는 클래스입니다.
    • 연도, 월, 일, 시, 분, 초, 마이크로초를 속성으로 가집니다.
    • 예: datetime(2024, 7, 15, 14, 30, 0)
  • datetime.timedelta:
    • 두 날짜 또는 시간 사이의 차이를 나타내는 클래스입니다.
    • 일(days), 초(seconds), 마이크로초(microseconds) 등의 속성으로 시간 차이를 나타냅니다.
    • 예: timedelta(days=5, hours=3)
  • datetime.tzinfo:
    • 시간대 정보를 나타내는 추상 베이스 클래스입니다.

 

from datetime import datetime, timedelta

# 현재 날짜와 시간
now = datetime.now()
print(f"현재 날짜와 시간: {now}")

# 특정 날짜와 시간 생성
specific_date = datetime(2024, 12, 25, 18, 0, 0)
print(f"특정 날짜와 시간: {specific_date}")

# 문자열을 날짜로 변환
date_str = "2024-07-15 14:30:00"
dt = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print(dt)

# 날짜 형식 지정
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"형식화된 날짜와 시간: {formatted_date}")

# 문자열을 날짜로 변환
date_str = "2024-07-15 14:30:00"
converted_date = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print(f"문자열에서 변환된 날짜와 시간: {converted_date}")

# 날짜와 시간 연산
future_date = now + timedelta(days=10)
print(f"10일 후의 날짜와 시간: {future_date}")

# 날짜 차이 계산
delta = specific_date - now
print(f"현재와 특정 날짜 사이의 차이: {delta.days}일")
from datetime import datetime, timedelta

# 현재 날짜와 시간 확인
now = datetime.now()
print("현재 날짜와 시간:", now)

# 현재 날짜와 시간을 원하는 형식으로 출력
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print("형식화된 현재 날짜와 시간:", formatted_now)

# 날짜와 시간 계산
# 예: 5일 후의 날짜와 시간 계산
future_date = now + timedelta(days=5)
print("5일 후의 날짜와 시간:", future_date)

# 예: 3일 전의 날짜와 시간 계산
past_date = now - timedelta(days=3)
print("3일 전의 날짜와 시간:", past_date)

# 시간 차이 계산
# 예: 특정 날짜와 시간 설정
specific_date = datetime(2023, 12, 25, 18, 0, 0)
print("특정 날짜와 시간:", specific_date)

# 현재 날짜와 특정 날짜 사이의 차이 계산
time_difference = specific_date - now
print("현재와 특정 날짜 사이의 차이:", time_difference)
print("차이의 일수:", time_difference.days)
print("차이의 초수:", time_difference.total_seconds())

반응형

[ 음력일과 D-Day계산 ]

입력한 날짜의 음력일자와 지정한 날부터 입력한 날까지의 D-Day를 계산하는 코드는 다음과 같습니다. 이 코드는 datetime 모듈과 lunarcalendar 라이브러리를 사용합니다. 입력한 날짜의 음력 일자를 계산하고, 지정한 날짜부터 입력한 날짜까지의 D-Day를 계산하여 출력합니다.

from datetime import datetime
import lunarcalendar

def get_lunar_date(solar_date_str):
    solar_date = datetime.strptime(solar_date_str, "%Y-%m-%d")
    lunar_date = lunarcalendar.Lunar.fromSolarDate(solar_date.year, solar_date.month, solar_date.day)
    return lunar_date

def calculate_d_day(start_date_str, end_date_str):
    start_date = datetime.strptime(start_date_str, "%Y-%m-%d")
    end_date = datetime.strptime(end_date_str, "%Y-%m-%d")
    
    delta = end_date - start_date
    
    return delta.days

def main():
    # 입력한 날짜
    input_date_str = input("날짜를 입력하세요 (YYYY-MM-DD): ")
    
    # 음력 날짜 계산
    lunar_date = get_lunar_date(input_date_str)
    print(f"입력한 날짜(양력): {input_date_str}")
    print(f"입력한 날짜(음력): {lunar_date}")
    
    # D-Day 계산을 위한 시작 날짜 입력
    start_date_str = input("시작 날짜를 입력하세요 (YYYY-MM-DD): ")
    
    # D-Day 계산
    d_day = calculate_d_day(start_date_str, input_date_str)
    
    print(f"시작 날짜: {start_date_str}")
    print(f"입력한 날짜까지 D-Day: {d_day}일")

if __name__ == "__main__":
    main()

반응형