Skip to main content

Persian Date & Time library (aka: Jalali Calendar) with timezone, DST(daylight-saving), full formatting & parsing support for python 2 & 3 including c extention

Project description

http://img.shields.io/pypi/v/khayyam.svg Requirements Status https://travis-ci.org/pylover/khayyam.svg?branch=master https://coveralls.io/repos/github/pylover/khayyam/badge.svg?branch=master https://img.shields.io/badge/license-GPLv3-brightgreen.svg

Jump To:

Basic Usage

>>> from khayyam import *
>>> JalaliDate(1346, 12, 30)
khayyam.JalaliDate(1346, 12, 30, Chaharshanbeh)
>>> JalaliDatetime(989, 3, 25, 10, 43, 23, 345453)
khayyam.JalaliDatetime(989, 3, 25, 10, 43, 23, 345453, Seshanbeh)

Current date and time

>>> print(JalaliDatetime.now())
khayyam.JalaliDatetime(1394, 5, 18, 16, 4, 48, 628383, Yekshanbeh)
>>> print(JalaliDatetime.now(TehranTimezone()) - timedelta(days=6*30))
1393-11-02 20:01:11.663719+03:30
>>> print(JalaliDate.today())
1394-4-30

Parsing & Formatting

>>> print(JalaliDatetime.now().strftime('%C'))
شنبه ۳ مرداد ۱۳۹۴ ۰۲:۳۷:۵۲ ب.ظ
>>> JalaliDatetime.strptime(u'چهارشنبه ۳۱ تیر ۱۳۹۴ ۰۵:۴۵:۴۰ ب.ظ', '%C')
khayyam.JalaliDatetime(1394, 4, 31, 17, 45, 40, 0, Chaharshanbeh)

Converting

>>> from datetime import date, datetime
>>> JalaliDate(1394, 4, 31).todate()
datetime.date(2015, 7, 22)
>>> now = JalaliDatetime(1394, 4, 31, 15, 38, 6, 37269)
>>> now.todate()
datetime.date(2015, 7, 22)
>>> now.todatetime()
datetime.datetime(2015, 7, 22, 15, 38, 6, 37269)
>>> JalaliDatetime(datetime(2015, 7, 22, 14, 47, 9, 821830))
khayyam.JalaliDatetime(1394, 4, 31, 14, 47, 9, 821830, Chaharshanbeh)
>>> JalaliDatetime(datetime(2015, 7, 22, 14, 47, 9, 821830, TehranTimezone()))
khayyam.JalaliDatetime(1394, 4, 31, 14, 47, 9, 821830, tzinfo=+03:30 dst:60, Chaharshanbeh)
>>> JalaliDate(date(2015, 7, 22))
khayyam.JalaliDate(1394, 4, 31, Chaharshanbeh)

Arithmetics & Operators

>>> from datetime import timedelta
>>> from khayyam import JalaliDate, JalaliDatetime
>>> now = JalaliDatetime(1394, 4, 31, 16, 17, 31, 374398)
>>> now + timedelta(days=1)
khayyam.JalaliDatetime(1394, 5, 1, 16, 17, 31, 374398, Panjshanbeh)
>>> now + timedelta(seconds=3600)
khayyam.JalaliDatetime(1394, 4, 31, 17, 17, 31, 374398, Chaharshanbeh)
>>> now - timedelta(seconds=3600)
khayyam.JalaliDatetime(1394, 4, 31, 15, 17, 31, 374398, Chaharshanbeh)
>>> yesterday = now - timedelta(1)
>>> yesterday
khayyam.JalaliDatetime(1394, 4, 30, 16, 17, 31, 374398, Seshanbeh)
>>> now - yesterday
datetime.timedelta(1)
>>> JalaliDatetime.now() - now
datetime.timedelta(0, 478, 328833) # 478 seconds taken to writing this section

Comparison

>>> now > yesterday
True
>>> now != yesterday
True
>>> now.todate() == yesterday.todate()
False

Change Log

  • 3.0.10

    • Imoprting JalaliDateFormatter & JalaliDatetimeFormatter in __init__.py

    • Accept also callable in JalaliDatetime.__init__(tzinfo=…) for tzinfo argument.

    • JalaliDatetime APIs, well documented.

  • 3.0.9
    • Removing pypy from travis, due the travis bug: buffer overflow !

  • 3.0.0
    • Raising TypeError instead of ValueError on overloaded operators, if the given type is mismatch.

    • Fixing tests to pass on systems that configured as UTC.

    • 100% Code coverage

    • Moving all tests to khayyam/tests

    • Removing some uncovered, obsolete code lines

  • 2.11.0
    • Using pure C instead of cython. Now the C extension is as fast as possible.

    • Including OSX in travis.yaml for python 2 & 3

    • Including pypy 2 & 3 tests in travis.yaml

  • 2.10.0
    • Add english weekday format directive

  • 2.9.8
    • Registering on travis-ci.org

    • Registering on coveralls.io

    • Registering on requires.io

  • 2.9.7
    • Fixing problem in setup.py in python3 #15

  • 2.9.3
    • setup.py for windows

  • 2.9.1
    • Release !

  • 2.9.1b2
    • encoding all __repr__ functions

  • 2.9.1b1 (2015-07-30)
    • Fixing setup.py bug

  • 2.9.1b0 (2015-07-30)
    • Using any available C compiler if cython is not available.

    • Using pure python if any error raised on installation with extension.

  • 2.9.0b0 (2015-07-30)
    • All algorithms reimplemented using cython and static typing, so the calculation

      with new C extension is very faster than python pure algorithm implementation.

    • Fallback switch to pure python algorithm implementation, if compiled binaries not available.

    • Test case(s) for algorithms(C & Python).

  • 2.8.0b1 (2015-07-28)
    • Jalalidate.timetuple method implemented from scratch including unit test.

    • Some methods with underscore renamed: JalaliDate.*_ascii to JalaliDate.*ascii

  • 2.7.0b2 (2015-07-26)
    • README.rst

  • 2.7.0-beta (2015-07-25)
    • some bug fixes.

    • method Jalalidate.fromdate removed. use constructor instead: JalaliDate(date)

    • method Jalalidate.fromjulianday removed. use constructor instead: JalaliDate(julian_days=..)

    • method Jalalidate.fromdatetime removed. use constructor instead: JalaliDatetime(datetime)

  • 2.6.0-beta (2015-07-25)
    • All possible formatting directives(a-z, A-Z) are supported, except: T

    • All format directives are tested.

    • Formatting and parsing test cases moved to khayyam.formatting.tests package.

    • In project: docs/html

    • JalaliDate.from_julian_days renamed to JalaliDate.fromjuliandays

    • JalaliDate.from_julian_days renamed to JalaliDate.fromjuliandays

    • JalaliDate.days_in_month renamed to JalaliDate.daysinmonth

    • JalaliDate.is_leap renamed to JalaliDate.isleap

    • JalaliDatetime Modern properties.

    • README.md updated

  • 2.5.0-beta (2015-07-23)
    • Doc: doctest

    • Doc: formatting and parsing directives table.

    • Doc: adding examples of new formatting directives in introduction: %D, %J, %R, %N, %n, %F, %h, %i, %r, %s, %o.

    • local date & time formats are changed: digits -> persian

    • Formatting and parsing test cases has been separated

  • 2.4.0-beta (2015-07-22)
    • Persian Numbers

    • %D, %J, %R, %N, %n, %F, %h, %i, %r, %s, %o directives has been added.

  • 2.3.0-alpha (2015-07-22)
    • Constants are moved to formatting packages except MINYEAR, MAXYEAR ans weekdays.

    • Doc: Introduction -> Formatting & parsing

    • Doc: Introduction -> Converting

    • New methods jalaliDate.todate, jalaliDate.fromdate, jalaliDatetime.todatetime and jalaliDatetime.fromdatetime

    • Removed methods jalaliDate.to_date, jalaliDate.from_date, jalaliDatetime.to_datetime and jalaliDatetime.fromdate_time

  • 2.2.1-alpha (2015-07-21)
    • Doc: Reading package’s version automatically from khayyam/__init__.py in sphinx/conf.py

    • Doc: Installation: (PYPI, Development version)

    • Doc: Testing

    • Doc: Contribution

  • 2.2.0-alpha (2015-07-21)
    • Generating API Documentation

  • 2.1.0-alpha (2015-07-20)
    • Adding ascii weekdayname in JalaliDatetime and JalaliDate representation(__repr__).

  • 2.0.0-alpha (2015-07-19) Incompatible with < 2.0.0
    • JalaliDate: method localformat renamed to localdateformat.

    • JalaliDatetime: method localformat renamed to localdatetimeformat.

    • JalaliDatetime: method localshortformat_ascii renamed to localshortformatascii.

    • JalaliDatetime: method localdatetimeformat_ascii renamed to localdatetimeformatascii.

    • JalaliDatetime: method ampm_ascii renamed to ampmascii.

    • JalaliDatetime: Migrating to New Formatter/Parser Engine

    • TehTz: renamed to TehranTimezone

    • Comparison and Timezones

    • Comparison with datetime.date & datetime.datetime

    • Fixing timezone bug

  • 1.1.0 (2015-07-17)
    • JalaliDate: New Formatter/Parser & full unittests.

Project details


Download files

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

Source Distribution

Khayyam-3.0.10.tar.gz (49.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

Khayyam-3.0.10.win-amd64-py3.5.exe (654.2 kB view details)

Uploaded Source

Khayyam-3.0.10.win-amd64-py2.7.exe (285.9 kB view details)

Uploaded Source

Khayyam-3.0.10-cp35-cp35m-win_amd64.whl (59.2 kB view details)

Uploaded CPython 3.5mWindows x86-64

Khayyam-3.0.10-cp35-cp35m-macosx_10_9_x86_64.whl (48.3 kB view details)

Uploaded CPython 3.5mmacOS 10.9+ x86-64

Khayyam-3.0.10-cp27-cp27m-win_amd64.whl (57.0 kB view details)

Uploaded CPython 2.7mWindows x86-64

Khayyam-3.0.10-cp27-cp27m-macosx_10_9_intel.whl (50.8 kB view details)

Uploaded CPython 2.7mmacOS 10.9+ Intel (x86-64, i386)

File details

Details for the file Khayyam-3.0.10.tar.gz.

File metadata

  • Download URL: Khayyam-3.0.10.tar.gz
  • Upload date:
  • Size: 49.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Khayyam-3.0.10.tar.gz
Algorithm Hash digest
SHA256 77e2f02358d5f23abbb0b03511af3d6e93053023fd8a4405870dc181d8e1e812
MD5 1a0df29e1adc19c73bf5aecc181d0216
BLAKE2b-256 2a925d0901b2be99c1a7abed899efb43e20eb32037c25e2a9385dfac5722dad1

See more details on using hashes here.

File details

Details for the file Khayyam-3.0.10.win-amd64-py3.5.exe.

File metadata

File hashes

Hashes for Khayyam-3.0.10.win-amd64-py3.5.exe
Algorithm Hash digest
SHA256 8840247db6cc6ae97e82c5e2cd858fce9858361c2d7186bd374a3df0fcf7c987
MD5 4315c7ccd1a97900fc5ab905f2360c66
BLAKE2b-256 a11ea55d504dcf7378ab044f1b3b998064f37b0ee66ba723d10682c180b67ec4

See more details on using hashes here.

File details

Details for the file Khayyam-3.0.10.win-amd64-py2.7.exe.

File metadata

File hashes

Hashes for Khayyam-3.0.10.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 40c846ad1803c579fe2df83a1bbaf53c6ee200186d4616d5262e876a85f291a2
MD5 88cfd7e751967ed20ad7e4f0e2fd840e
BLAKE2b-256 bba48927def26a87bd4e46161b03611506e27e4e60d9b31390bc9190dea2083f

See more details on using hashes here.

File details

Details for the file Khayyam-3.0.10-cp35-cp35m-win_amd64.whl.

File metadata

File hashes

Hashes for Khayyam-3.0.10-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 9b848155d314ec5ed1898df50e0bbba7276195d128dcec21dc3dabcadaae0bfe
MD5 ffde97bcf9cb2b629c51e07a2b064240
BLAKE2b-256 8c6be3c31567235d0cf4d0573c4fa9ea6cbced4eb14285466f9effbc0b155855

See more details on using hashes here.

File details

Details for the file Khayyam-3.0.10-cp35-cp35m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for Khayyam-3.0.10-cp35-cp35m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f968e3bda345d064d84c023d679e4e90393ef4eae24e5f48680d0733b94d0ed3
MD5 115bed24477cc2f4afc164a1764d4fe5
BLAKE2b-256 adfffabce6779c749f4a6c3fa527c046121f7f1cf316925512335a73a4e94968

See more details on using hashes here.

File details

Details for the file Khayyam-3.0.10-cp27-cp27m-win_amd64.whl.

File metadata

File hashes

Hashes for Khayyam-3.0.10-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 e13785e7ccf1b4346c7ab78e49059948a74f12e6903e296fb74ae7ad7e4a676d
MD5 012da0f4c79581573f484148a71de162
BLAKE2b-256 0a3268aef6116066406c77752bdfc0c102e1a4734a44f3a3dd0d0fe17569c363

See more details on using hashes here.

File details

Details for the file Khayyam-3.0.10-cp27-cp27m-macosx_10_9_intel.whl.

File metadata

File hashes

Hashes for Khayyam-3.0.10-cp27-cp27m-macosx_10_9_intel.whl
Algorithm Hash digest
SHA256 90930ad4f0ed307de60d90dd29203b0a95ed2160f2e1a94d78a1207ba5e89a86
MD5 44ba3554bcb325016df2a61fcc922af2
BLAKE2b-256 0a4b43c3a4cf6e238238d50fe9dd176941c47ef58dbfaf623dcd59ec80fd9cde

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page