Расчет лунных / лунно-солнечных праздников в питоне

Здесь есть какие-нибудь календари? Я искал информацию о том, как рассчитать праздники текущего года, которые происходят нерегулярно в григорианском календаре. Обычно это происходит из-за того, что праздник основан на более старом лунном календаре.

Я погуглил до тошноты и добился некоторого прогресса, но не смог завершить. Если у кого-то есть пример кода на современном языке, описывающий их расчет, я был бы очень благодарен. Я бы предпочел питон или один из языков C *.

Мои успехи:

Завершено:

  • Пасха: можно найти с помощью python-dateutil .
  • Ханука, и другие календарные праздники на иврите можно найти с помощью holiday.py из python date_util * s *.

Закрыть:

  • Рамадан: date_utils имеет функцию исламского календаря в модуле, который я попробовал и получил в основном правильные, но не совсем точные результаты. (Он хочет преобразовать все в юлианские даты и обратно, я не уверен, почему.)


    import calendar_util as cu        # from date utils; no jokes from .br
    #
    # year = int(sys.argv1) or datetime.now().year
    tj = cu.gregorian_to_jd(year, 1, 1)   # this year in julian
    ti = cu.jd_to_islamic(tj)             # this year in islamic cal
    rj = cu.islamic_to_jd(ti[0], 9, 1)    # first day of ramadan in julian
    #
    print cu.jd_to_gregorian(rj)          # first day of ramadan in greg
    # output: (2011, 8, 1)                # correct

Я получаю результаты в один выходной в 2014, 2016 годах, что подтверждается этим сайтом , хотя он упоминает «наблюдения в Северной Америке» немного расплывчато, на мой вкус. Был бы признателен за указатели для повышения точности, например, если 1 января достигнет некоторой годовой даты отсечения. Исламские годы короче и, следовательно, наступают раньше с каждым годом.

Нада:

  • Китайский Новый год: Я не нашел ничего, кроме этой дискуссии , где ответ не раскрывается. кредит Я нашел ссылку на эту книгу за 30 долларов, но предпочел бы не платить и копать столько за несколько строк кода. В обсуждении на Amazon упоминается, что все процедуры находятся в календаре Emacs. Однако я даже не устанавливал Emacs, так что, если это единственный доступный код, надеюсь, кто-нибудь поможет мне его раскопать и упростить, чтобы дать мне Рамадан / китайский Нью-Йорк на текущий год.

    Не уверен, что это полезно здесь, но события солнца и луны доступны через pyephem , который я уже использую. Может быть, это тоже пригодится.

7
задан Richard J. Ross III 21 June 2013 в 00:12
поделиться