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.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.

Downloads

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.8.tar.gz (47.0 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.8.win-amd64-py3.5.exe (650.4 kB view details)

Uploaded Source

Khayyam-3.0.8.win-amd64-py2.7.exe (282.2 kB view details)

Uploaded Source

Khayyam-3.0.8-cp35-cp35m-win_amd64.whl (55.6 kB view details)

Uploaded CPython 3.5mWindows x86-64

Khayyam-3.0.8-cp35-cp35m-macosx_10_9_x86_64.whl (46.0 kB view details)

Uploaded CPython 3.5mmacOS 10.9+ x86-64

Khayyam-3.0.8-cp27-cp27m-win_amd64.whl (53.4 kB view details)

Uploaded CPython 2.7mWindows x86-64

Khayyam-3.0.8-cp27-cp27m-macosx_10_9_intel.whl (48.5 kB view details)

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

File details

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

File metadata

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

File hashes

Hashes for Khayyam-3.0.8.tar.gz
Algorithm Hash digest
SHA256 a8a120204791be6f2c88e3b43a61867e6e9c038cda67219df47cbe592608ea69
MD5 0d511482a1240e963a27d76d9fa1233f
BLAKE2b-256 29646efcfc313e3b0effffd2c75ef952f3017070ff8078e851f4e80febcedd7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.8.win-amd64-py3.5.exe
Algorithm Hash digest
SHA256 75c2e723da997638231bca1d82751774015e4f98d1cd47c3db4024d575833cd4
MD5 455fa97c08c2761e32f4e3e743e8af1c
BLAKE2b-256 96674f88bd2312cc6cdc50897d240a2c4464c04c1d41966d717c10a71a784399

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.8.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 305f0c616ba55cb8cb5e8c5130ab43052723c58eaafb5e5b03cff4b4041163d9
MD5 cf3343e8972f1bafc91d1920c0928403
BLAKE2b-256 9aca0efc85a6d7bf1b83def2c8c6cc82b227354c572d77d93cbe400a3fef04df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.8-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 24a62f60f5307882eea2c422719b36d74fc53c64ed2551f18d3abde0f8626314
MD5 b6186de9196ff2d82a87dcc2ee468100
BLAKE2b-256 7f34b56b48da9eaae779723eaf54510ecca93953c99eca22722d534cc22f46f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.8-cp35-cp35m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8f44117c745b593acdbd6849e883226c4799e004ff6cbe0eebf2b0633dbc7ae5
MD5 44b23ee890d230e1ed372b0b5d45cf17
BLAKE2b-256 08bd5eacc739835c37208fa40717069b68675056d71859a6cf35de6810f872c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.8-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 1624eb3a80dc459958ec1e505a5e5522cba408a2896f93fd2c8642e454babc0e
MD5 47dc7ae305deee98b3ef434ea5bc2549
BLAKE2b-256 1fa5d29d1196cdd2e97268b5db7e82235925a3940b82dd3f8f96d3a3b9a08982

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.8-cp27-cp27m-macosx_10_9_intel.whl
Algorithm Hash digest
SHA256 05399c696e8feecb65af6e567bcbeb42fc7069f661194e267754088608f450d4
MD5 f0482ae1a678b44cfdb35274afaacbb2
BLAKE2b-256 cd83534ceb847983e1fcad915db9733c26c70d40bab7eaa2f0449847cb665858

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