Skip to main content

jdatetime is Jalali implementation of Python’s datetime module

Status

https://github.com/slashmili/python-jalali/workflows/Tests/badge.svg?branch=main https://ci.appveyor.com/api/projects/status/ge5rk703ydx649a6?svg=true https://img.shields.io/pypi/v/jdatetime.svg https://img.shields.io/pypi/pyversions/jdatetime.svg

Install

pip install jdatetime

Documents

This module exactly follows Python Standard datetime module’s methods http://docs.python.org/release/2.7.1/library/datetime.html

Also these methods are added to jdatetime.date and jdatetime.datetime :

fromgregorian(**kw)
    Convert gregorian to jalali and return jdatetime.date
    jdatetime.date.fromgregorian(day=X,month=X,year=X)
    jdatetime.date.fromgregorian(date=datetime.date)
    jdatetime.datetime.fromgregorian(datetime=datetime.datetime)
togregorian(self)
    Convert current jalali date to gregorian and return datetime.date
isleap(self)
    check if year is leap year
    algortim is based on http://en.wikipedia.org/wiki/Leap_year

Example

$ 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.
(InteractiveConsole)
>>> import jdatetime
>>> jdatetime.datetime.now()
jdatetime.datetime(1394, 12, 4, 8, 37, 31, 855729)
>>> jdatetime.date.today()
jdatetime.date(1394, 12, 4)

Locale

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 = jdatetime.date(1397, 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.
(InteractiveConsole)
>>> import locale
>>> import jdatetime
>> jdatetime.datetime.now().strftime("%a, %d %b %Y %H:%M:%S")
u'Wed, 08 Ord 1395 20:47:32'
>>> locale.setlocale(locale.LC_ALL, "fa_IR")
'fa_IR'
>>> jdatetime.datetime.now().strftime("%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')
jdatetime.datetime.now().strftime('%A %B')
# u'\u062f\u0648\u0634\u0646\u0628\u0647 \u062e\u0631\u062f\u0627\u062f'

Development

You can contribute to this project forking it from GitHub and sending pull requests.

First fork the repository and then clone it:

$ git clone git@github.com:<you>/python-jalali.git

Before committing, you can run all the above tests against all supported Python versions with tox. You need to install tox first:

$ pip install tox

And then you can run all tests:

$ tox

If you wish to limit the testing to specific Python version, you can parametrize the tox run:

$ tox -e py39

Release Steps

  • Bump the version in setup.py and jdatetime/__init__.py. We are using Semantic Versioning.

  • Add release notes in CHANGELOG.md

  • Commit and push the changes. Create a PR

  • After the PR is merged, create a release with a tag name like v<version>

  • Github Action creates the package and deploys it to pypi.

Release files for jdatetime 3.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jdatetime 3.8.2
File Size Uploaded
jdatetime-3.8.2.tar.gz 14.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jdatetime 3.8.2
File Interpreter ABI Platform
jdatetime-3.8.2-py3-none-any.whl Python 3 none any Details

Total release size: 27.5 kB

Release files / jdatetime-3.8.2.tar.gz

Download URL jdatetime-3.8.2.tar.gz
Size 14.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c685687e3f39e1b9a3ba9c00ed9d8e88603bc8994413e84623e6c5d43214e6f8
BLAKE2b-256 checksum
How to use checksums
06cfa20e8b5c5a87491b0cc34f99929f381d004c7b4e0dcdd635a958dc60d2a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.10

Release files / jdatetime-3.8.2-py3-none-any.whl

Download URL jdatetime-3.8.2-py3-none-any.whl
Size 13.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
45639531930aa0aa6cece334276aafcafc16cc6272579d596f3594e15de4d7f3
BLAKE2b-256 checksum
How to use checksums
5acf5a96d35b1822f28473f3c93fed216f9ccc8fadc1f99e408e33b74b04b7db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.10

Release history Release notifications | RSS feed

6.1.0

2 release files

6.0.2

2 release files

6.0.1

2 release files

6.0.0

2 release files

5.3.0

2 release files

5.2.0

2 release files

5.1.1

2 release files

5.1.0

2 release files

5.0.0

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.0

2 release files

This release

3.8.2 This release

2 release files

3.8.1

2 release files

3.8.0

2 release files

3.7.0

2 release files

3.6.4

2 release files

3.6.2

1 release file

3.6.1

1 release file

3.6.0

1 release file

3.5.0

1 release file

3.4.0

1 release file

3.3.0

1 release file

3.2.0

1 release file

3.1.0

1 release file

3.0.2

1 release file

3.0.0

1 release file

2.2.1

1 release file

2.2.0

1 release file

2.1.0

1 release file

2.0.0

1 release file

1.9.1

1 release file

1.9.0

1 release file

1.8.2

1 release file

1.8.1

1 release file

1.8.0

1 release file

1.7.5

1 release file

1.7.4

1 release file

1.7.3

1 release file

1.7.2

1 release file

1.7.1

1 release file

1.7

1 release file

1.6

1 release file

1.5

1 release file

1.4

1 release file

1.3

1 release file

1.2

1 release file

1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page