Jalali date and datetime with other tools
Project description
PersianTools
-
Jalali (Shamsi) date and datetime (based on python datetime's module)
- Convert Jalali to Gregorian date/datetime and vice versa
- Support comparison and arithmetic operators such as
+
,-
,==
,>=
- Support timezone
-
Convert Arabic and Persian characters/digits to each other
Install Package
python -m pip install persiantools
Persiantools supports Python 2.7 & 3.5+.
How to use
Date
>>> from persiantools.jdatetime import JalaliDate >>> import datetime >>> JalaliDate.today() JalaliDate(1395, 4, 18, Jomeh) >>> JalaliDate(1369, 7, 1) JalaliDate(1369, 7, 1, Yekshanbeh) >>> 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)
Datetime
>>> from persiantools.jdatetime import JalaliDateTime >>> import datetime, pytz >>> JalaliDateTime.now() JalaliDateTime(1395, 4, 18, 1, 43, 24, 720505) >>> JalaliDateTime.now().to_gregorian() # Jalali to Gregorian datetime.datetime(2016, 7, 8, 1, 43, 24, 720505) >>> JalaliDateTime.to_jalali(datetime.datetime(1988, 5, 4, 14, 0, 0, 0)) # Gregorian to Jalali JalaliDateTime(1367, 2, 14, 14, 0) >>> JalaliDateTime.fromtimestamp(578723400, pytz.timezone("Asia/Tehran")) # Timestamp to Jalali JalaliDateTime(1367, 2, 14, 8, 0, tzinfo=<DstTzInfo 'Asia/Tehran' +0330+3:30:00 STD>) >>> JalaliDateTime.now(pytz.utc) JalaliDateTime(1395, 4, 17, 21, 23, 53, 474618, tzinfo=<UTC>)
Format
Based on python strftime()
behavior
>>> from persiantools.jdatetime import JalaliDate, JalaliDateTime >>> import pytz >>> JalaliDate(1367, 2, 14).isoformat() '1367-02-14' >>> JalaliDate(1395, 3, 1).strftime("%Y/%m/%d") '1395/03/01' >>> JalaliDateTime(1369, 7, 1, 14, 0, 10, 0, pytz.utc).strftime("%c") 'Yekshanbeh 01 Mehr 1369 14:00:10' >>> JalaliDateTime.now(pytz.utc).strftime("%I:%M:%S.%f %p %z %Z") '01:49:22.518523 PM +0000 UTC'
Digit/Character converter
>>> from persiantools import characters, digits >>> digits.en_to_fa("0987654321") '۰۹۸۷۶۵۴۳۲۱' >>> digits.ar_to_fa("٠٩٨٧٦٥٤٣٢١") # or digits.ar_to_fa(u"٠٩٨٧٦٥٤٣٢١") '۰۹۸۷۶۵۴۳۲۱' >>> digits.fa_to_en("۰۹۸۷۶۵۴۳۲۱") '0987654321' >>> digits.fa_to_ar("۰۹۸۷۶۵۴۳۲۱") '٠٩٨٧٦٥٤٣٢١' >>> characters.ar_to_fa("كيك") 'کیک'
Operators
>>> from persiantools.jdatetime import JalaliDate, JalaliDateTime >>> import datetime >>> JalaliDate(1367, 2, 14) == JalaliDate(datetime.date(1988, 5, 4)) True >>> JalaliDateTime(1367, 2, 14, 4, 30) >= JalaliDateTime(1369, 7, 1, 1, 0) False >>> JalaliDate(1367, 2, 14) == datetime.date(1988, 5, 4) True >>> JalaliDate(1395, 2, 14) + datetime.timedelta(days=38) JalaliDate(1395, 3, 21, Jomeh) >>> JalaliDateTime(1395, 12, 30) - JalaliDateTime(1395, 1, 1) datetime.timedelta(365)
Serializing and de-serializing
>>> from persiantools.jdatetime import JalaliDate >>> import pickle >>> # Serializing >>> file = open("save.p", "wb") >>> pickle.dump(JalaliDate(1367, 2, 14), file) >>> file.close() >>> # de-serializing >>> file = open("save.p", "rb") >>> jalali = pickle.load(file) >>> file.close() >>> jalali JalaliDate(1367, 2, 14, Chaharshanbeh)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size persiantools-1.5.1-py3-none-any.whl (13.2 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size persiantools-1.5.1.tar.gz (14.4 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for persiantools-1.5.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ee52ef5509d96ee1f3aac23ed9fce45e48985ed29f66315ebf9357b79e812d8 |
|
MD5 | 901037de5097322f53a825570f609e69 |
|
BLAKE2-256 | 7d32af685f3260ed4671138ff88d0fde45d229db5e88ec681ead0fb482d8ac9b |