ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 춘분, 하지, 추분, 동지
    과학적이거나 기술적인 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])

    '과학적이거나 기술적인' 카테고리의 다른 글

    맥스웰 방정식 (Maxwell's equations)  (0) 2023.03.08
    ChatGPT  (0) 2023.01.25
    연골  (0) 2022.09.26
    코사인 법칙  (0) 2022.07.01
    나선형  (0) 2022.06.15

    댓글

Designed by Tistory.