Feature-Rich
Dual Calendar Support
TypeScript Ready

Et-Calendar

The most feature-rich React library for Ethiopian and Gregorian calendars. Build applications with dual calendar support, beautiful components and powerful utilities.

Quick Installation

Terminal
npm install et-calendar

Powerful Features

Everything you need to build applications with Ethiopian and Gregorian calendar support.

Dual Calendar Support

Seamlessly work with both Ethiopian and Gregorian calendars in a single interface.

DateTime Components

Complete date and time selection with customizable formats and time zones.

TypeScript Ready

Full TypeScript support with comprehensive type definitions for better development experience.

Fully Customizable

Style with Tailwind CSS or standard CSS. Complete control over appearance and behavior.

Localization Support

Built-in support for Amharic and English with extensible localization system.

Performance Optimized

Lightweight, fast, and optimized for production applications with minimal bundle size.

Quick Installation

Terminal
npm install et-calendar

Quick Start Guide

Get up and running with Et-Calendar in minutes. Here are the most common use cases.

import { useState } from "react";
import { EthiopianDate } from "et-calendar/lib";
import { DatePicker } from "et-calendar";

function App() {
  const [date, setDate] = useState<Date>(() => new Date());
  const [ethDate, setEthDate] = useState(() => EthiopianDate.toEth(new Date()));

  const handleDateChange = (newDate: Date) => {
    setDate(newDate);
    setEthDate(EthiopianDate.toEth(newDate));
  };

  return (
    <DatePicker
      selectedDate={date} // The selected date
      onDateChange={handleDateChange} // This function will be called when a date is selected
      showCalendars="both" // Options: "gregorian" | "ethiopian" | "both"
      viewFirst="Gregorian" // Options: "Gregorian" | "Ethiopian"
      dateFormat="MMMM dd, yyyy" // Time tokens will be ignored in DatePicker
      closeOnSelect // Close popover after day pick
    />
  );
}

export default App;

Interactive Date Pickers

Experience the power of Et-Calendar with these interactive examples. Try different configurations and see how they work in real-time.

Gregorian First View
Gregorian View First (Both Calendars)
Gregorian Only
Compact Format
Date & Time (Gregorian First)
Ethiopian First View
Ethiopian View First (Both Calendars)
Ethiopian Only
Compact Format
Date & Time (Ethiopian First)

Selected Date Information

View the selected date in both calendar systems with various formatting options.

Gregorian Calendar

Full Date

January 28, 2026

Formatted

2026-01-28

Ethiopian Calendar

Full Date

ጥር 20, 2018

Formatted DateTime

2018-05-20 13:21:48

Ethiopian Date Formatting Examples

Explore different formatting options for Ethiopian dates. Each example shows the format string and the resulting output.

Year-Month-Day
yyyy-MM-dd

Standard date format, commonly used in technical contexts

2018-05-20

Day/Month/Year
dd/MM/yyyy

Common format used in Ethiopia and many other countries

20/05/2018

Full Month Name Day, Year
MMMM dd, yyyy

Long format with full month name in Amharic

ጥር 20, 2018

Day of Week, Month Day Year
E, MMM dd yyyy

Abbreviated format with day of week

ረቡ, ጥር 20 2018

Full Day of Week, Full Month Name Day, Year
EEE, MMMM dd, yyyy

Complete format with full day and month names

ረቡዕ, ጥር 20, 2018

Date and Time
yyyy-MM-dd HH:mm:ss

Standard datetime format with 24-hour time

2018-05-20 13:21:48

Full Month Name Day, Year Hour:Minute:Second
MMMM dd, yyyy HH:mm:ss

Long datetime format with full month name

ጥር 20, 2018 13:21:48

API Reference

Complete reference for all components, hooks, and utilities in Et-Calendar.

DatePicker
Component

A component for selecting dates using Ethiopian or Gregorian calendars.

Props

selectedDate?
Date - Currently selected date
onDateChange
(date: Date) => void - Callback when the date changes
showCalendars
'ethiopian' | 'gregorian' | 'both' - Which calendars to display
viewFirst?
'Ethiopian' | 'Gregorian' - Initial tab (default: "Gregorian")
dateFormat?
string - Display format (time tokens ignored)
minDate? / maxDate?
Date - Bounds for selection and navigation
clampNavigation?
boolean - Prevent navigating outside min/max months/years
enforceInitialWithinRange?
boolean - Clamp initial selectedDate into min/max
closeOnSelect?
boolean - Close popover after selecting a date (default: true)
datePickerClassNames?
DatePickerClassNames - Styling hooks for trigger/panel/tabs
calanderClassNames?
CalendarClassNames - Styling hooks for the calendar grid
popoverProps?
PopoverProps - Popover positioning tweaks
ethiopianTabName? / gregorianTabName?
string - Custom tab labels
DateTimePicker
Component

A component for selecting both dates and times, supporting Ethiopian and Gregorian calendars.

Props

selectedDate?
Date - Currently selected date/time
onDateChange
(date: Date) => void - Callback on date/time change
showCalendars
'ethiopian' | 'gregorian' | 'both' - Which calendars to show
viewFirst?
'Ethiopian' | 'Gregorian' - Initial tab (default: "Gregorian")
dateFormat?
string - Display format for the date portion
timeFormat?
'12h' | '24h' - Time picker mode (default: "12h")
minDate? / maxDate?
Date - Bounds for selection and navigation
clampNavigation?
boolean - Prevent navigating outside min/max months/years
enforceInitialWithinRange?
boolean - Clamp initial selectedDate into min/max (default: true)
closeOnSelect?
boolean - Close popovers after picking a date and after picking minutes (and AM/PM)
datePickerClassNames?
DatePickerClassNames - Styling hooks for date trigger/panel/tabs
timePickerClassNames?
TimePickerClassNames - Styling hooks for the time picker
calanderClassNames?
CalendarClassNames - Styling hooks for the calendar grid
popoverProps?
PopoverProps - Popover positioning tweaks
ethiopianTabName? / gregorianTabName?
string - Custom tab labels