A lunar calendar converter, including a number of lunar and solar holidays, mainly from China.
Project description
Overview
Chinese version(中文版) is provided.
LunarCalendar is a Lunar-Solar Converter, containing a number of lunar and solar holidays in China.
Korean, Japanese and Vietnamese lunar calendar is the same as Chinese calendar, but has different holidays. If LunarCalendar is extended; Korean, Japanese and Vietnamese holidays are easily included, with their languages.
LunarCalendar supports the time range 1900-2100. But if you have a need for the 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 holidays 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
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 solarterm
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 holidays in the the country, such as: Christmas, Halloween, etc.
Lunar holidays.
Solar holidays 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 holidays and languages.
Some unusual holidays may not be included, welcom to extend.
About
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for LunarCalendar-0.0.8-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8dbc6b5e5b7320c8fb6d2098d54a901625545012d6f30d0610ae88f8685905f6 |
|
MD5 | 9ba85384a0505dd19e752299b71d9512 |
|
BLAKE2b-256 | ec86eb4834ba58cb5a864098c303942a2e077fac967572e1f887f480b08ddae7 |