java gradle package for kenat (Best ethiopic date/calendar library of all time)
# Kenat Java
A modern **Java 21** library for Ethiopian calendar (Ge'ez / Ethiopic) arithmetic, formatting, holiday and fasting calculations.
> This is an independent Java rewrite of the original **Kenat** TypeScript library by Melaku Demeke, built from scratch using idiomatic Java — not a line-by-line translation.
---
## Features
- 🗓 **Ethiopian ↔ Gregorian conversion** — accurate multi-century date math
- 📅 **Month & year grid generation** — 7-column calendar grid with holidays and padding
- 🕰 **Ethiopian time** — 12-hour Ethiopian clock ↔ 24h Gregorian; add/subtract/diff
- 🔢 **Ge'ez numerals** — integers ↔ Ethiopic script (supports 0–99,999,999)
- 📖 **Localized output** — Amharic and English month/weekday names
- 🎉 **Holiday lookup** — fixed, movable Christian, and Islamic holidays
- 🕌 **Orthodox commemorations** — the monthly saints/nigs calendar, overlaid on the month grid
- 🙏 **Fasting periods** — Abiy Tsome, Tsome Hawaryat, Nineveh, Tsome Nebiyat, Filseta, Ramadan, Tsome Dihenet
- 📐 **Date arithmetic** — add/subtract days/months/years; full diff breakdown
- 📏 **Distance helpers** — human-readable "how far to Fasika?" breakdowns in Amharic or English
- ✅ **Bahire Hasab** — complete movable feast algorithm (Enkutatash, Timkat, Easter, Pentecost, etc.)
- 🧩 **Clean API** — Java 21 records, `java.time` integration, immutable types, no external dependencies
This release tracks the reference TypeScript library `kenat` v4.x
feature-for-feature. See Parity with the TypeScript library
for the handful of places where the two deliberately differ.
---
## Installation
Available on Maven Central as `io.github.henaorth16:kenat:1.1.0`. Requires **Java 21+**.
### Gradle (Kotlin DSL)
```kotlin
repositories {
mavenCentral()
}
dependencies {
implementation("io.github.henaorth16:kenat:1.1.0")
}
```
### Gradle (Groovy DSL)
```groovy
dependencies {
implementation 'io.github.henaorth16:kenat:1.1.0'
}
```
### Maven
```xml
io.github.henaorth16
kenat
1.1.0
```
### …