Ethiocal is an Ethiopian calendar (ባሕረ-ሐሳብ) tool for retrieving fasting and holiday dates based on the EOTC calendar, and converting between Ethiopian and Gregorian dates. Ethiopia follows its own calendar with 13 months (twelve 30-day months plus a 5- or 6-day 13th month).
- GUI app — graphical interface for desktop (macOS/Linux/Windows) and Android.
- CLI —
ethiocal-clisubcommands for scripting and terminal use. - HTTP API — run
ethiocal-cli --serverfor integration with other services. - Get Ethiopian fasting and religious festival dates for a specific year.
- Convert Ethiopian dates to Gregorian dates and vice versa.
Pre-built binaries are available on the Releases page. Pick your platform:
| Platform | Download |
|---|---|
| macOS (Apple Silicon) | curl -Lo ethiocal.zip https://github.com/yinebebt/ethiocal/releases/latest/download/ethiocal-macos-arm64.app.zip && unzip ethiocal.zip |
| macOS (Intel) | curl -Lo ethiocal.zip https://github.com/yinebebt/ethiocal/releases/latest/download/ethiocal-macos-amd64.app.zip && unzip ethiocal.zip |
| Linux (x86_64) | curl -Lo ethiocal.tar.xz https://github.com/yinebebt/ethiocal/releases/latest/download/ethiocal-linux-amd64.tar.xz && tar xJf ethiocal.tar.xz |
| Windows (x86_64) | curl -Lo ethiocal.zip https://github.com/yinebebt/ethiocal/releases/latest/download/ethiocal-windows-amd64.exe.zip && unzip ethiocal.zip |
| Android (arm64) | ethiocal-android.apk — sideload on a 64-bit device |
The CLI/server tool ships per platform too, as ethiocal-cli-<os>-<arch> on the same Releases page.
go install github.com/yinebebt/ethiocal@latestgit clone https://github.com/yinebebt/ethiocal.git
cd ethiocal
make build # builds both: ./ethiocal (GUI) and ./ethiocal-cli (CLI + server)Note: Building the GUI app requires a C compiler and OpenGL headers because Fyne uses CGO. On Ubuntu/Debian:
sudo apt-get install libgl1-mesa-dev xorg-dev. macOS and Windows have these out of the box. The CLI builds with pure Go (no CGO).
Run ethiocal (or launch the packaged app) to open the GUI:
ethiocalThe GUI provides two tabs:
- Date Converter — pick a direction (Gregorian → Ethiopian or Ethiopian → Gregorian), pick a date from the calendar, and convert.
- Bahire-Hasab — enter an Ethiopian year to view all fasting and festival dates.
The terminal/server tool is a separate binary (ethiocal-cli), so the GUI app
carries no CLI dependencies. Install with
go install github.com/yinebebt/ethiocal/cmd/ethiocal-cli@latest.
# Get religious dates for Ethiopian year 2017
ethiocal-cli bahir 2017
# Convert Gregorian date to Ethiopian (year month day as separate args)
ethiocal-cli convert gtoe 2025 2 2
# Convert Ethiopian date to Gregorian
ethiocal-cli convert etog 2017 5 25ethiocal-cli --serverStarts the API on port 8080 (override with the PORT environment variable).
| Endpoint | Description |
|---|---|
GET /api/bahir/{year} |
Bahire-Hasab calendar for the given Ethiopian year |
GET /api/gtoe/{date} |
Convert Gregorian to Ethiopian (YYYY-MM-DD) |
GET /api/etog/{date} |
Convert Ethiopian to Gregorian (YYYY-MM-DD) |
import (
"github.com/yinebebt/ethiocal/bahirehasab"
"github.com/yinebebt/ethiocal/dateconverter"
)
// Get festivals for Ethiopian year 2017
festival, err := bahirehasab.BahireHasab(2017)
// Gregorian → Ethiopian
etDate, err := dateconverter.Ethiopian(2025, 2, 2)
// Ethiopian → Gregorian
gregDate, err := dateconverter.Gregorian(2017, 5, 25)See LICENSE.