How can I convert Gregorian date to Persian date and vice-versa in Python?

All I found was some widgets and stuffs which will create Persian Calendar. I don’t want a Persian calendar. I just want to convert dates to each other.
So how can I do that?

Also, you can use jdatetime library like the following:

 import jdatetime
 gregorian_date =,2,30).togregorian()
 jalili_date =,month=5,year=2017) 

See other functions in details in this document.

You can use PersianTools library:


>>> from persiantools.jdatetime import JalaliDate
>>> import datetime

JalaliDate(1395, 4, 18, Jomeh)

>>> JalaliDate(, 9, 23))  # Gregorian to Jalali
JalaliDate(1369, 7, 1, Yekshanbeh)

>>> JalaliDate.to_jalali(2013, 9, 16)       # Gregorian to Jalali
JalaliDate(1392, 6, 25, Doshanbeh)

>>> JalaliDate(1392, 6, 25).to_gregorian()  # Jalali to Gregorian, 9, 16)

>>> JalaliDate.fromtimestamp(578707200)     # Timestamp to Jalali
JalaliDate(1367, 2, 14, Chaharshanbeh)

pip install jdatetime

import jdatetime 
fa_date =
fa_date.j_months_fa[0]"%a, %d %b %Y %H:%M:%S")#'Tue, 05 Far 1399 15:49:44'"%y %m %d") #'99 01 05'"%Y %m %d") # '1399 01 05''%A %B')

 import jdatetime
 jalili_date =,1,5).togregorian()
 gregorian_date = ,month=3,year=2020)

first you have to install the jdatetime

'pip install jdatetime'

the library Jdateimte is so weak and non-friendly without any valid documentation , almost everyone get confused over it (thanks to it’s iranian development).
but here’s the drill:

timestamp = 1647334174.7492166
#returns 'jdatetime.datetime(1400, 12, 24, 1, 48, 17, 532053)'

From your ‘datetime’ object:

yourDate =
#returns same result as before.

I didnt see khayyam package in the answers so here is the link:

it is faster than jdatetime and better maintained

pip install jdatetime
import jdatetime
gregorian_date =,5,24).togregorian()
jalili_date =,month=12,year=2021)