Excited to announce the release of khmer-hybrid-calendar v1.1.0 on npm! π°πβ¨
If you're building applications that need Cambodian holidays, Khmer lunar dates, Buddhist observance days (ααααααΈα/ααααααα), or international & Chinese calendar integrations, this update brings major enhancements and performance improvements.
π¦ What's New in v1.1.0
1. πͺ· Expanded Buddhist & Khmer Lunar Observances
- Buddhist Lent Ceremonies: Added Candle Making Day (αα·ααΈαα·αααα), Dragon Monk Ordination (αααα½αααΆαααααΆα), and Lent Entry (α αΌααααααααααΆ).
-
Dynamic Waning Observances: Accurate waning Kaor day (
ααααααα) and end-of-month Sil day (ααααααΈα ααΆα ααα) calculated for 29 vs 30-day lunar months. -
Pchum Ben Closing Day: Added the final transition day (
αααααααααααα»ααα·ααα).
2. ποΈ Cambodian National & UNESCO Heritage Days
- UNESCO World & Intangible Heritage: Added anniversaries for Koh Ker, Kun Lbokator, Khmer Krama, Royal Ballet, Sbek Thom, Chapei Dang Veng, and Tuol Sleng Archives.
- Historical Observances: National Fish Day, Cambodia's UNESCO accession, and official commemoration days.
3. π 54 International & Chinese Calendar Observances
- Expanded to 54 official international days (UN & global observances).
- Added Chinese New Year's Eve (
αααααααα αΌαααααΆαα α·α) and festival calculations.
4. β‘ 10x Performance Boost
- Optimized astronomical ephemeris calculations and date-range filtering, cutting generation times by over 90%.
π Quick Start
npm install khmer-hybrid-calendar
import calendar from 'khmer-hybrid-calendar';
// Convert Gregorian to Khmer Lunar Date
const khmerDate = calendar.gregorianToKhmer(2026, 4, 14);
console.log(`${khmerDate.lunarDay} αα${khmerDate.monthName}`);
// Output: 14ααΎα ααα
αααα
// Check if a date is a public holiday
const isHoliday = calendar.isHoliday(new Date('2026-04-14'));
console.log(isHoliday); // true (Khmer New Year Day 1)
// Generate iCal (.ics) feed
const ics = calendar.generateICalFeed(2026);
Check it out on npm or GitHub. Feedback and contributions are welcome! π
Top comments (0)