sumerian-dates
v0.1.0
Published
Convert Gregorian dates to the Nippur Sumerian ritual calendar
Downloads
99
Maintainers
Readme
sumerian-date
Convert Gregorian dates to the Nippur Sumerian ritual calendar as documented by The Ishtar Gate (archived January 2025).
Pure JavaScript, zero runtime dependencies, works in Node.js 14+.
Background
The Sumerian calendar is a lunisolar calendar rooted in the Nippur tradition, the sacred city of Enlil. Each month begins at the first sunset after the astronomical new moon. The year begins with the month whose new moon falls after the vernal equinox. Short years contain 12 months; long years contain 13, following the 19-year Metonic cycle.
Astronomical calculations implement the algorithms of Jean Meeus (Astronomical Algorithms, 2nd ed.) for:
- Vernal equinox (Ch. 27)
- New moon (Ch. 49)
- Sunset time for Nippur (32.13°N, 45.23°E by default)
The day-start rule (sunset) is verified against the Ishtar Gate app reference:
New moon 8 April 2024 21:20 local (UTC+3) → year start 10 April 2024 ✓
Installation
npm install sumerian-dateQuick Start
const { sumerianDate, sumerianYear } = require('sumerian-date');
// Today's Sumerian date
const today = sumerianDate();
console.log(today.toString());
// → "Day 15 of Šekinku — Gregorian 5 Mar 2026"
console.log(today.monthCuneiform); // 𒌗𒊺𒆥𒋻
console.log(today.monthMeaning); // "Reaping of Barley"
console.log(today.observances); // [{ name: 'Ešeš', description: '...' }, ...]API
sumerianDate([date], [opts]) → SumerianDate
Convert a JS Date to its Sumerian equivalent. Defaults to new Date() (now).
const sd = sumerianDate(new Date('2024-06-04T15:37:00Z'));
sd.monthName // "Gusisu"
sd.monthCuneiform // "𒌗𒄞𒋛𒁲"
sd.monthMeaning // "Marching Forth of Oxen"
sd.monthDescription // "Beginning of the agricultural season..."
sd.dayOfMonth // 27
sd.monthLengthDays // 29
sd.monthStartDate // Date object
sd.monthEndDate // Date object
sd.cyclePosition // 18 (position in the 19-year Metonic cycle)
sd.isIntercalaryYear // false
sd.isIntercalaryMonth // false
sd.observances // Array of { name, description } for today's observances
sd.toString() // "Day 27 of Gusisu — Gregorian 4 Jun 2024"opts:
| Option | Default | Description |
|--------|---------|-------------|
| latitude | 32.13 | Reference latitude for sunset (Nippur) |
| longitude | 45.23 | Reference longitude for sunset (Nippur) |
sumerianYear([gregorianYear], [opts]) → SumerianYear
Get the full year structure including all months with start dates.
const year = sumerianYear(2026);
year.springGregorianYear // 2026
year.cyclePosition // 1 (first year of new 19-year cycle)
year.isLongYear // false
year.yearStart // Date: ~late March / early April
year.yearEnd // Date
year.nextYearStart // Date
year.months.forEach(m => {
console.log(`${m.number}. ${m.name} — starts ${m.startDate.toDateString()} (${m.lengthDays} days)`);
});
// 1. Barazagar — starts Thu Apr 02 2026 (30 days)
// 2. Gusisu — starts Sat May 02 2026 (29 days)
// ...
// 12. Šekinku — starts Mon Feb 22 2027 (29 days)cyclePosition(springGregorianYear) → number (1–19)
Returns the position within the 19-year Metonic cycle. Long years (13 months) are at positions: 3, 6, 8, 11, 14, 17, 19.
cyclePosition(2007) // 1 — first year of cycle
cyclePosition(2009) // 3 — long year (Diri Šekinku appended)
cyclePosition(2023) // 17 — long year (Diri Kin Inana inserted after month 6)
cyclePosition(2026) // 1 — new cycle beginsvernalEquinox(year) → Date
vernalEquinox(2024) // Thu Mar 20 2024 03:06 UTCnextNewMoon(afterDate) → Date
nextNewMoon(new Date('2024-03-20')) // Mon Apr 08 2024 18:21 UTCmonths — Array of month data
The twelve standard months. Each has:
number(1–12)name— transliterationcuneiform— Unicode cuneiformmeaning— English translationseasondescriptionfestivals— array of{ day, name, description }
intercalaryMonth / intercalaryMonthYear17
The two intercalary month variants (Diri Šekinku and Diri Kin Inana).
The Twelve Months
| # | Name | 𒀭 | Meaning | Season | |---|------|-----|---------|--------| | 1 | Barazagar | 𒌗𒁈𒍠𒃻 | Dais of the Sanctuary | Spring | | 2 | Gusisu | 𒌗𒄞𒋛𒁲 | Marching Forth of Oxen | Spring | | 3 | Sig Ga | 𒌗𒋞𒂵 | Placing of Bricks | Spring | | 4 | Šunumun | 𒌗𒋗𒆰𒈾 | Seeding | Summer | | 5 | Nenegar | 𒌗𒉈𒉈𒃻 | Lighting of the Braziers | Summer | | 6 | Kin Inana | 𒌗𒆥𒀭𒈹 | The Labours of Inana | Summer | | 7 | Duku | 𒌗𒇯𒆬 | The Sacred Mound | Autumn | | 8 | Apin Dua | 𒌗𒀳𒃮𒀀 | Releasing of the Plough | Autumn | | 9 | Gan Gan-e | 𒌗𒃶𒃶𒈾 | Coming of Clouds | Autumn | | 10 | Kusu | 𒌗𒆬𒋆 | Lady of the Grain | Autumn | | 11 | Uduru | 𒌗𒍩𒀀 | Emmer | Winter | | 12 | Šekinku | 𒌗𒊺𒆥𒋻 | Reaping of Barley | Winter | | 13* | Diri Šekinku | 𒌗𒋛𒀀𒊺𒆥𒋻 | Second Reaping of Barley | Winter |
*Intercalary month, appended after Šekinku in cycle years 3, 6, 8, 11, 14, 19. In cycle year 17, Diri Kin Inana is inserted after month 6 instead.
Monthly Observances
Two observances occur every month:
| Day | Name | Description | |-----|------|-------------| | 7 | Ešeš (Quarter Moon) | First-quarter moon; offering to household gods | | 15 | Ešeš (Full Moon) | Great Offering to all household gods | | Last | Kisiga (New Moon) | Funerary offerings; libation of fresh water for the dead |
These are returned in sumerianDate().observances for the current day.
Calendar Rules (Summary)
- Month start: First sunset after the astronomical new moon (day begins at sunset, per Sumerian custom).
- Year start: The month whose new moon falls first after the vernal equinox.
- Intercalation: Metonic 19-year cycle. Years 3, 6, 8, 11, 14, 17, 19 have 13 months. Cycle began spring 2007.
- Month 13 placement: After month 12 in most long years; after month 6 (as Diri Kin Inana) in cycle year 17.
- Reference location: Nippur (32.13°N, 45.23°E) by default. Override with
opts.latitude/opts.longitude.
Sources
- The Ishtar Gate — Ritual Calendar (archived): https://web.archive.org/web/20250125122100/https://www.theishtargate.com/Calendar/
- Mark E. Cohen, Cultic Calendars of the Ancient Near East (CDL Press, 1993)
- Jean Meeus, Astronomical Algorithms (2nd ed., Willmann-Bell, 1998) — Chapters 27 & 49
License
MIT
