[PYTHON] Gregorius-Kalenderdatum geändert von Julius-Datum

Hallo. jdcal [^ 1](Umrechnungsberechnung zur Korrektur des Gregorius-Kalenderdatums (Jahr, Monat, Tag) vom Julius-Tag (MJD)) Und bestätigte, dass es richtig war.

Die Bestätigung basiert auf der Formel "[Julius pendeln](https://ja.wikipedia.org/wiki/Julius pendeln)" (Wikipedia) (→ "[Konvertierung zwischen Julius Tag und Gregorius Kalenderdatum]" ( Ich habe eine Übereinstimmung mit dem Ergebnis von mjd2date ()) von "http://qiita.com/kkdd/items/2f045ee9aa3a76921cc7)" gefunden.

[^ 1]: Die von diesem jdcal (jd2gcal) verwendete Formel ist jedoch nicht so gut wie die anderen. Nicht sehr gut.

$ pip install jdcal
$ ./test_jdcal.py
 passed

test_jdcal.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import print_function
from jdcal import jd2gcal

def test():
    for mjd in range(146097):
        w = {jd2gcal: jd2gcal(2400000.5, mjd)[:3], mjd2date: mjd2date(mjd)}
        if w['jd2gcal']!=w['mjd2date']:
            print(w['jd2gcal'], "!=", w['mjd2date'])
            return
    print(' passed')

# conversion from modified Julian date to Gregorian calendar date 
def mjd2date(mjd):
    n = mjd + 678881  # Gregorian
    a = 4*n + 3
    a += 4*((3*((4*(n+1))//146097+1))//4)  # Gregorian
    b = 5*((a%1461)//4) + 2
    year, month, day = a//1461, b//153 + 3, (b%153)//5 + 1
    if month > 12:
        year, month = year+1, month%12
    return year, month, day

test()
exit(0)

Recommended Posts

Gregorius-Kalenderdatum geändert von Julius-Datum
Umrechnung zwischen Julius-Tag und Gregorius-Kalenderdatum
Wie berechnet man den Julius Tag?