Coding/BigData_Python
태양시 계산.py(SolarTime)
잉_민
2024. 3. 3. 13:40
728x90
반응형
from datetime import datetime, date, time, timedelta
import math
import numpy as np
# 한국 위치 및 시간대 설정
# latitude = 37.5665 # 예: 서울의 위도
# longitude = 126.9780 # 예: 서울의 경도
# time_difference = 9 # UTC+9
latitude = 37.63817 # 예: 서울의 위도
longitude = 127.0364 # 예: 서울의 경도
time_difference = 9 # UTC+9
# 현재 날짜 사용 또는 사용자 입력에 따른 날짜 설정
today = date.today()
print("오늘 날짜:", today)
use_today = input("오늘 날짜를 사용하시겠습니까? (Y/N): ")
if use_today.upper() == "N":
month_enter = int(input("관심 있는 월을 입력하세요 (예: 2, 3 등): "))
day_enter = int(input("관심 있는 일을 입력하세요 (예: 2, 3 등): "))
date_wanted = date(today.year, month_enter, day_enter)
else:
date_wanted = today
date_reference = date(today.year, 1, 1)
day_number = (date_wanted - date_reference).days + 1
# B 값 및 시간 방정식(E) 계산
def calculate_B(n):
return (n - 1) * 360 / 365
def calculate_E(n):
B = calculate_B(n)
return 229.2 * (0.000075 + 0.001868 * np.cos(np.radians(B)) - 0.032077 * np.sin(np.radians(B)) -
0.014615 * np.cos(2 * np.radians(B)) - 0.04089 * np.sin(2 * np.radians(B)))
E = calculate_E(day_number)
print("B =", calculate_B(day_number))
print("E (시간 방정식) =", E, "분")
# 태양 시간 계산
def calculate_solar_time(longitude, E, time_difference):
# 표준 경도 (15도 * 시간차)
standard_longitude = time_difference * 15
# 태양 시간과 표준 시간 사이의 차이
time_difference_minutes = 4 * (standard_longitude - longitude) + E
return time_difference_minutes
time_difference_minutes = calculate_solar_time(longitude, E, time_difference)
current_utc_time = datetime.utcnow()
standard_time = current_utc_time + timedelta(hours=time_difference)
solar_time = standard_time + timedelta(minutes=-time_difference_minutes)
print("현재 UTC 시간:", current_utc_time.strftime('%Y-%m-%d %H:%M:%S'))
print("표준 시간:", standard_time.strftime('%Y-%m-%d %H:%M:%S'))
print("태양 시간:", solar_time.strftime('%Y-%m-%d %H:%M:%S'))
결과
표준시간
태양시간
한국 UTC+9
"Solar Time and Solar Time Python Calculator는 Jonathan Scheffe가 개발하였으며, 2020년 7월 10일에 University of Florida에서 발표되었습니다. 출처: University of Florida 공식 웹사이트."
728x90
반응형