A very lightweight package that provides functions to convert between Gregorian and Solar Hijri calendars. Solar Hijri is the official calendar being used in Iran.
Requires Python 3.12+
pip install gshconverter
The main functions are:
solar_hijri_to_gregorian(sh_year: int, sh_month: int, sh_day: int) -> tuple[int, int, int]
gregorian_to_solar_hijri(g_year: int, g_month: int, g_day: int) -> tuple[int, int, int]
is_g_leap(year: int) -> bool
is_sh_leap(year: int) -> bool
Example:
>>> from gshconverter import *
>>> is_sh_leap(1403)
True
>>> solar_hijri_to_gregorian(1403, 12, 30)
(2025, 3, 20)
>>> gregorian_to_solar_hijri(2025, 3, 20)
(1403, 12, 30)
This library currently assumes 33-year cycles which means it will get inaccurate for dates too far in the future (the first known incorrect year is 1502 SH) or too far in the past (the results are known to be correct at least until 1210 SH according to University of Tehran astronomical calculation).
The output of converter functions are the same as the ones in FarsiWeb's jalali.c , but gshconverter
uses a different algorithm and is written from scratch. It also is faster than the current Python implementation used in jdatetime library .