Back to projects

amirebog/Imperial-jsPublic

گاهشماری شاهنشاهی

README.md

Shahanshahi (Imperial) JavaScript

A lightweight JavaScript library for converting Shahanshahi (Imperial, Persian-based) and Gregorian calendar systems to each other.


Install

Node.js

npm install github:amirebog/imperial-js

Then import it:

const imperial = require('shahanshahi-calendar');

API

toImperial(gy, gm, gd)

Converts a Gregorian date to Shahanshahi.

imperial.toImperial(2026, 2, 18)
// { iy: 2585, im: 2, id: 18 }

toImperial(date)

Converts a JavaScript Date object to Shahanshahi.

imperial.toImperial(new Date(2026, 1, 18))
// { iy: 2585, im: 2, id: 18 }

toGregorian(iy, im, id)

Converts a Shahanshahi date to Gregorian.

imperial.toGregorian(2585, 2, 18)
// { gy: 2026, gm: 2, gd: 18 }

isValidImperialDate(iy, im, id)

Checks whether a Shahanshahi date is valid.

imperial.isValidImperialDate(2585, 12, 30)
// true

isLeapImperialYear(iy)

Checks if a Shahanshahi year is a leap year.

imperial.isLeapImperialYear(2585)
// true or false

imperialMonthLength(iy, im)

Returns number of days in a given month of a Shahanshahi year.

imperial.imperialMonthLength(2585, 12)
// 30

imperialToDateObject(iy, im, id)

Converts a Shahanshahi date to a JavaScript Date object.

imperial.imperialToDateObject(2585, 2, 18)
// new Date(2026, 1, 18)

imperialWeek(iy, im, id)

Returns Saturday and Friday of the current week (week starts on Saturday).

imperial.imperialWeek(2585, 2, 18)
// { 
//   saturday: { iy: 2585, im: 2, id: 14 }, 
//   friday:   { iy: 2585, im: 2, id: 20 } 
// }

License

MIT