Skip to main content

Jalali datetime binding for python

Project description

jdatetime is Jalali implementation of Python’s datetime module



pip install jdatetime


This module exactly follows Python Standard datetime module’s methods

Also these methods are addedd to and jdatetime.datetime :

    Convert gregorian to jalali and return,month=X,year=X)
    Convert current jalali date to gregorian and return
    check if year is leap year
    algortim is based on


$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import jdatetime
jdatetime.datetime(1394, 12, 4, 8, 37, 31, 855729)
>>>, 12, 4)


In order to get the date string in farsi you need to set the locale to fa_IR. The locale could be specified explicitly upon instantiation of date/datetime instances, or by setting a default locale.

Instance locales is named argument only:

import jdatetime
fa_date =, 4, 23, locale='fa_IR')
fa_datetime = jdatetime.datetime(1397, 4, 23, 11, 40, 30, locale='fa_IR')

date and datetime instances provide the method aslocale() to return a clone of the instance with the same timestamp, in a different locale.

Default Locale

It’s possible to set the default locale, so all new instances created afterwards would use the desired locale, unless explicitly specified otherwise.

$ python
Python 2.7.9 (default, Mar  1 2015, 12:57:24)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> import jdatetime
>>"%a, %d %b %Y %H:%M:%S")
u'Wed, 08 Ord 1395 20:47:32'
>>> locale.setlocale(locale.LC_ALL, "fa_IR")
>>>"%a, %d %b %Y %H:%M:%S")
u'\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647, 08 \u0627\u0631\u062f\u06cc\u0628\u0647\u0634\u062a 1395 20:47:56'

If your requirements demand to support different locales withing the same process, you could set the default locale per thread. New date and datetime instances created in each thread, will use the specified locale by default. This supports both Python threads, and greenlets.

import jdatetime
jdatetime.set_locale('fa_IR')'%A %B')
# u'\u062f\u0648\u0634\u0646\u0628\u0647 \u062e\u0631\u062f\u0627\u062f'

Release Steps

  • Bump the version
  • Add release notes in
  • Commit and create a tag with a name like v3.5.9
  • python sdist
  • twine upload dist/jdatetime-3.5.9.tar.gz

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for jdatetime, version 3.6.2
Filename, size File type Python version Upload date Hashes
Filename, size jdatetime-3.6.2.tar.gz (11.0 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page