http://www.fourmilab.ch/documents/calendar/
این سایت انواع مختلف تقویم ها رو توضیح داده و قابلیت تبدیل بین اونها رو داره و سرس کدها به جاوااسکریپت قابل دریافته.

من میلادی به شمسی اون رو به پیتون تبدیل کردم که اینجا قرار میدم و اگه اشتباه نکنم بنا به ادعای نویسندش تا ۵هزار سال بعد از میلاد رو جواب میده!

PersianDate.zip

و روش استفاده:

>>> import PersianDate
>>> PersianDate.today()
(1389.0, 12.0, 27.0, 5.0)
>>> PersianDate.todayStr()
'\xd8\xac\xd9\x85\xd8\xb9\xd9\x87 27 \xd8\xa7\xd8\xb3\xd9\x81\xd9\x86\xd8\xaf 1389'
>>> PersianDate.greg2persian(1950, 1, 1)
(1328.0, 10.0, 11.0)
>>>


که در آن چون کاراکتر های فارسی unicode اند بصورت کدشده چاب شده اند.