All Projects → wolfhong → LunarCalendar

wolfhong / LunarCalendar

Licence: MIT License
A lunar calendar converter in Python, including 24 solar terms and a number of solar holidays and lunar holidays, mainly from China.

Programming Languages

HTML
75241 projects
python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to LunarCalendar

borax
📓 Python3工具集合库——中国农历/中文数字/设计模式/树形结构
Stars: ✭ 57 (+67.65%)
Mutual labels:  lunar-calendar, chinese-festivals
LunarCalendar
A lightweight macOS App for displaying calendar and time
Stars: ✭ 82 (+141.18%)
Mutual labels:  lunar-calendar
8th-LinuxFest-Website
Amirkabir Linux Festival Website
Stars: ✭ 20 (-41.18%)
Mutual labels:  festival
monica-fork
🧗 您的私人社交关系管家。Monica with Lunar Calendar support and more security features.
Stars: ✭ 11 (-67.65%)
Mutual labels:  lunar-calendar
zhdate
ZhDate 中国农历转换
Stars: ✭ 63 (+85.29%)
Mutual labels:  lunar-calendar
hoffnung3000
Platform for decentralized, anonymized, self-curated festivals
Stars: ✭ 27 (-20.59%)
Mutual labels:  festival
the-shrine-ng
🔴 A progressive web app of a retro soundboard. The Shrine comes with "Gude Laune!" and many more legendary sounds. 🔊
Stars: ✭ 16 (-52.94%)
Mutual labels:  festival
Aeneas
aeneas is a Python/C library and a set of tools to automagically synchronize audio and text (aka forced alignment)
Stars: ✭ 1,942 (+5611.76%)
Mutual labels:  festival
esp32-flite
Speech synthesis running on ESP32 based on Flite engine.
Stars: ✭ 28 (-17.65%)
Mutual labels:  festival
EKAstrologyCalc
Astrology Calculator calculates moon's rise/set times, moon Age, moon phases and Zodiac Sign for location and time
Stars: ✭ 31 (-8.82%)
Mutual labels:  lunar-calendar
astro
自用天文算法,公历农历转换、八大行星位置、日出日落月出月落时间、节气物候时间等
Stars: ✭ 33 (-2.94%)
Mutual labels:  lunar-calendar

LunarCalendar: A Lunar-Solar Converter

Last stable version (PyPI) build status

Overview

Chinese version(中文版) is provided.

LunarCalendar is a Lunar-Solar Converter, containing a number of lunar and solar festivals in China.

Korean, Japanese or Vietnamese lunar calendar is the same as Chinese calendar, but has different festivals. Korean, Japanese and Vietnamese festivals can be easily included, with their languages.

LunarCalendar supports a time range of 1900 to 2100, which may be enough for a long time. But if you have needs for a wider time range, you can use generate.html to extend it.

LunarCalendar is inspired by Lunar-Solar-Calendar-Converter.

Features

  • Accurate raw data, synchronize with Microsolf's ChineseLunisolarCalendar class
  • Easy to extend festivals and languages, supported both zh_hans and zh_hant
  • Included Lunar Festivals, such as: MidAutumn Festival, Chinese New Year Eve, DragonBoat Festivals
  • Included Solar Festivals without fixed dates, such as: Mother's Day, Easter
  • Added legality check of the lunar and solar date
  • Supported 24 solar terms(立春/春分/清明/冬至等)

Install

LunarCalendar can be installed from the PyPI with easy_install:

$ easy_install LunarCalendar

Or pip:

$ pip install LunarCalendar

If you encounter an error like command 'gcc' failed with exit status 1 while installing ephem, maybe you should install python-devel first. For CentOS:

$ yum install python-devel

For Ubuntu:

$ apt-get install python-dev

For Windows, maybe you should install Microsoft Build Tools first. It will help you building c++ code for ephem library, which LunarCalendar includes for 24-solar-terms calculation.

Console Commands

A console command called lunar-find can be used to find the date of the festival, using it's chinese name. Default to this year. Supporting alias of the festival.

$ lunar-find 重阳
重阳节 on 2018: 2018-10-17

$ lunar-find 重陽節
重阳节 on 2018: 2018-10-17

$ lunar-find 登高节 2019
重阳节 on 2019: 2019-10-07

You can also print all included festivals or 24 solar terms by date asc with:

$ lunar-find all 2019
$ lunar-find festival 2012
$ lunar-find 节日 2012
$ lunar-find solarterm
$ lunar-find 节气

Quickstart

Solar to Lunar:

import datetime
from lunarcalendar import Converter, Solar, Lunar, DateNotExist

solar = Solar(2018, 1, 1)
print(solar)
lunar = Converter.Solar2Lunar(solar)
print(lunar)
solar = Converter.Lunar2Solar(lunar)
print(solar)
print(solar.to_date(), type(solar.to_date()))

Lunar to Solar:

lunar = Lunar(2018, 2, 30, isleap=False)
print(lunar)
solar = Converter.Lunar2Solar(lunar)
print(solar)
lunar = Converter.Solar2Lunar(solar)
print(lunar)
print(lunar.to_date(), type(lunar.to_date()))
print(Lunar.from_date(datetime.date(2018, 4, 15)))

Legality check for solar and lunar date. 2018-2-15(Leap Month) does not exist, but 2012-4-4(Leap Month) exists:

Lunar(2012, 4, 4, isleap=True)  # date(2012, 5, 24)
try:
    lunar = Lunar(2018, 2, 15, isleap=True)
except DateNotExist:
    print(traceback.format_exc())

Print all the festivals included, with Chinese and English. Other languages are welcome to extend(Fork & Pull Request).

from lunarcalendar.festival import festivals

# print festivals, using English or Chinese
print("----- print all festivals on 2018 in chinese: -----")
for fest in festivals:
    print(fest.get_lang('zh'), fest(2018))

print("----- print all festivals on 2017 in english: -----")
for fest in festivals:
    print(fest.get_lang('en'), fest(2017))

Output:

......
母亲节 2018-05-13
父亲节 2018-06-17
中秋节 2018-09-24
感恩节 2018-11-22
重阳节 2018-10-17
春节 2018-02-16
中元节 2018-08-25
七夕节 2018-08-17
腊八节 2019-01-13
清明节 2018-04-05
除夕 2019-02-04
寒衣节 2018-11-08
元宵节 2018-03-02
龙抬头 2018-03-18
端午节 2018-06-18
......

Contribution

Including festival standards:

  • Common festivals in the the country, such as: Christmas, Halloween, etc.
  • Lunar festivals.
  • Solar festivals without fixed dates, such as: Mother's Day, Easter, etc.

Supporting Chinese and English only now. If you want to add Korean, Japanese or Vietnamese supports, modify lunarcalendar/festival.py to add festivals and languages.

Some unusual festivals may not be included, welcome to extend.

About

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].