Skip to content

cas8398/islamic-date

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

8 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Islamic Date

Modern Multi-Calendar Library for Hijri, Gregorian & Javanese Calendars

Fast, accurate calendar calculations with Umm Al-Qura & MABIMS Hijri calendars, Islamic events detection, and Javanese calendar support.

npm version License: MIT

โœจ Features

  • ๐ŸŒ™ Hijri Calendar - Umm Al-Qura (Saudi) & MABIMS (Southeast Asia) calendars
  • ๐Ÿ“… Gregorian โ†” Hijri - Bidirectional date conversion
  • ๐ŸŽ‹ Javanese Calendar - Traditional Javanese calendar system
  • ๐Ÿ•Œ Islamic Events - Auto-detection of Ramadan, Eid, and major dates
  • ๐ŸŒ Multi-language - Arabic, Indonesian, Javanese, English
  • ๐Ÿš€ Zero dependencies - Lightweight and fast
  • ๐Ÿ“ฆ TypeScript support - Full type definitions

๐Ÿ“ฆ Installation

npm install islamic-date

๐Ÿš€ Quick Start

import {
  getCurrentHijriDate,
  getAllCalendars,
  CalendarType,
} from "islamic-date";

// Get current Hijri date
const hijri = getCurrentHijriDate({ language: "en" });
console.log(`${hijri.day} ${hijri.monthName} ${hijri.year} H`);

// MABIMS calendar (2010-2030)
const mabims = gregorianToHijri(2024, 3, 11, "id", CalendarType.MABIMS);
if (mabims.success) {
  console.log(`${mabims.day} ${mabims.monthName} ${mabims.year} H`);
}

// All calendars at once
const all = getAllCalendars({
  language: "id",
  includeEvents: true,
  includeJawa: true,
});
console.log(all.hijriFormatted); // 15 Rajab 1446 H
console.log(all.jawaFormatted); // Pahing, 15 Sura 1958 J

๐Ÿ“– API Reference

gregorianToHijri(year, month, day, language?, calendarType?)

Convert Gregorian to Hijri date.

import { gregorianToHijri, CalendarType } from "islamic-date";

// Umm Al-Qura (default)
const hijri = gregorianToHijri(2024, 3, 11, "ar");

// MABIMS (2010-2030 only) - experimental
const result = gregorianToHijri(2024, 3, 11, "id", CalendarType.MABIMS);
if (result.success) {
  console.log(`${result.day} ${result.monthName} ${result.year} H`);
} else {
  console.log(`Error: ${result.error}`);
}

Calendar Types:

  • CalendarType.UMMALQURA - Saudi Arabia's official calendar (default)
  • CalendarType.MABIMS - MABIMS unified calendar (2010-2030) โš ๏ธ Experimental

Returns: { success, day, month, year, monthName, weekIndex } or { success: false, error }

getCurrentHijriDate(options)

Get current Hijri date with localization.

const today = getCurrentHijriDate({
  language: "ar", // 'ar' | 'id' | 'en' | 'jv'
  dayChangeAtMidnight: true, // true = midnight, false = sunset
});

getIslamicEvents(month, day, weekIndex, language)

Get Islamic events for a Hijri date.

const events = getIslamicEvents(9, 1, 1, "ar"); // ['ุจุฏุงูŠุฉ ุฑู…ุถุงู†']
const eid = getIslamicEvents(10, 1, 1, "en"); // ['Eid al-Fitr']

Detected Events: Ramadan, Eid al-Fitr, Eid al-Adha, Day of Arafah, Islamic New Year, Mawlid, Lailatul Qadr, Ashura

getJawaDate(date, language?)

Get Javanese calendar date.

const jawa = getJawaDate(new Date(), "jv");
console.log(`${jawa.dayName}, ${jawa.day} ${jawa.monthName} ${jawa.year} J`);
// Pahing, 15 Sura 1958 J

getAllCalendars(options)

Get all calendars in one call.

const all = getAllCalendars({
  language: "id",
  includeEvents: true,
  includeJawa: true,
});
// Returns: { gregorian, hijri, hijriFormatted, jawa, jawaFormatted, events }

๐ŸŒ MABIMS Calendar

MABIMS (Brunei-Indonesia-Malaysia-Singapore) unified Islamic calendar for Southeast Asia.

Limitations:

  • Date range: 2010-2030 only
  • Experimental - always check success property
  • Some dates may be missing

Usage:

const result = gregorianToHijri(2025, 1, 1, "id", CalendarType.MABIMS);
if (!result.success) {
  // Fallback to Umm Al-Qura
  const fallback = gregorianToHijri(2025, 1, 1, "id");
}

๐ŸŒ Language Support

Language Code Hijri Example Jawa Example
Arabic ar ูกูฅ ุฑุฌุจ ูกูคูคูฆ ู‡ู€ -
English en 15 Rajab 1446 H Pahing, 15 Sura 1958 J
Indonesian id 15 Rajab 1446 H Pahing, 15 Sura 1958 J
Javanese jv 15 Rejeb 1446 H Pahing, 15 Sura 1958 J

๐Ÿ’ก Examples

Yearly Events Generator

import { getIslamicEvents } from "islamic-date";

const importantDates = [
  { month: 1, day: 1 }, // Islamic New Year
  { month: 3, day: 12 }, // Mawlid
  { month: 9, day: 1 }, // Ramadan
  { month: 10, day: 1 }, // Eid al-Fitr
  { month: 12, day: 10 }, // Eid al-Adha
];

importantDates.forEach(({ month, day }) => {
  const events = getIslamicEvents(month, day, 1, "en");
  console.log(events);
});

MABIMS Testing

const { gregorianToHijri, CalendarType } = require("islamic-date");

for (let year = 2010; year <= 2030; year++) {
  const result = gregorianToHijri(year, 1, 1, "id", CalendarType.MABIMS);
  console.log(
    result.success
      ? `โœ… ${year}: ${result.day} ${result.monthName} ${result.year}`
      : `โŒ ${year}: ${result.error}`
  );
}

๐Ÿ“ License

MIT License - see LICENSE file

๐Ÿ™ Acknowledgments

Umm Al-Qura calendar algorithm โ€ข MABIMS authorities โ€ข Javanese calendar traditions

๐Ÿ“ฎ Support

๐Ÿ› GitHub Issues


Made with โค๏ธ for the global Muslim and Indonesian communities

About

๐ŸŒ™ Multi-calendar JavaScript library for Hijri (Umm Al-Qura & MABIMS), Gregorian, and Javanese date conversion โ€” with Islamic events detection and multi-language support.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors