Преобразовать григорианскую (христианскую) дату в персидскую дату и наоборот в Python

Как преобразовать Gregorian date в Persian date и наоборот в Python?

Все, что я нашел, было некоторыми виджетами и материалами, которые создадут персидский календарь. Я не хочу персидского календаря. Я просто хочу конвертировать даты друг в друга. Итак, как я могу это сделать?

Ответ 1

После того, как вы все больше искали в Интернете, я нашел библиотеку, которую кто-то написал для этой цели: Jalali.py.

Вы можете использовать этот код Python для преобразования григорианских и персидских дат друг к другу.

>>> import jalali
>>> jalali.Persian('1393-1-11').gregorian_string()
'2014-3-31'
>>> jalali.Persian(1393, 1, 11).gregorian_datetime()
datetime.date(2014, 3, 31)
>>> jalali.Persian('1393/1/11').gregorian_string("{}/{}/{}")
'2014/3/31'
>>> jalali.Persian((1393, 1, 11)).gregorian_tuple()
(2014, 3, 31)

>>> jalali.Gregorian('2014-3-31').persian_string()
'1393-1-11'
>>> jalali.Gregorian('2014,03,31').persian_tuple()
(1393, 1, 11)
>>> jalali.Gregorian(2014, 3, 31).persian_string("{0}")
'1393'

Ответ 2

Кроме того, вы можете использовать библиотеку jdatetime следующим образом:

 import jdatetime
 jalili_date = jdatetime.date(1396,2,30).togregorian()
 gregorian_date =  jdatetime.date.fromgregorian(day=19,month=5,year=2017) 

Подробнее см. другие функции в документе.

Ответ 3

Вы можете использовать библиотеку PersianTools:

Пример:

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

>>> JalaliDate.today()
JalaliDate(1395, 4, 18, Jomeh)

>>> JalaliDate(datetime.date(1990, 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
datetime.date(2013, 9, 16)

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