과학적이거나 기술적인
춘분, 하지, 추분, 동지
Hoze
2022. 11. 9. 17:53
춘분을 흔히 봄에 낮과 밤의 길이가 같은 날이라고 하지만, 엄밀히 말해 태양이 황경(黃經) 0도를 지날 때, 또는 황도를 지나 북쪽으로 올라가기 시작하는 때를 말한다. 이를 구하는 공식이 너무 복잡하여 이해할 수 없지만, pymeeus라는 파이선 라이브러리를 이용하여 춘분과 동지를 구할 수 있다.
해다마 대략 여섯 시간씩 늦춰지는데, 윤년이 있어서 그 변동 폭이 하루 이내로 제한된다고 한다.
import argparse
from datetime import date
from pymeeus.Sun import Sun
import math
import arrow
def celestial_longitude(year, season, title):
epoch = Sun.get_equinox_solstice(year, target=season)
epochUTC = epoch.get_full_date(utc=True)
frac, integer = math.modf(epochUTC[5])
# timepoint = arrow.get(*epochutc[:5])
GMT = arrow.get(*epochUTC[:5], int(integer), round(frac*1e6))
Korea = GMT.shift(hours=9)
GMT = GMT.format('YYYY-MM-DD HH:mm:ss')
Korea = Korea.format('YYYY-MM-DD HH:mm:ss')
print('\t{}\tGMT: {} Korea: {}'.format(title, GMT, Korea))
season={
'spring': 'Spring equinox',
'summer': 'Summer solstice',
'autumn': 'Autumn equinox',
'winter': 'Winter solstice'
}
parser = argparse.ArgumentParser(
description = 'Get equinox and solstice dates.'
)
parser.add_argument(
'years',
nargs='*',
help='Enter a year.'
)
args = parser.parse_args()
if len(args.years) == 0:
args.years.append(date.today().year)
for year in args.years:
print(year, end='')
for i in season.items():
celestial_longitude(int(year), i[0], i[1])