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.

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.9.tar.gz (46.9 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.9.win-amd64-py3.5.exe (650.3 kB view details)

Uploaded Source

Khayyam-3.0.9.win-amd64-py2.7.exe (282.0 kB view details)

Uploaded Source

Khayyam-3.0.9-cp35-cp35m-win_amd64.whl (55.5 kB view details)

Uploaded CPython 3.5mWindows x86-64

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

Uploaded CPython 3.5mmacOS 10.9+ x86-64

Khayyam-3.0.9-cp27-cp27m-win_amd64.whl (53.3 kB view details)

Uploaded CPython 2.7mWindows x86-64

Khayyam-3.0.9-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.9.tar.gz.

File metadata

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

File hashes

Hashes for Khayyam-3.0.9.tar.gz
Algorithm Hash digest
SHA256 18a5ce717cfe53cceac110cb1addfcd52ea1923908029b71bc0a2018a05bfe35
MD5 aaed51c049393960ed0f4ae1f9f54046
BLAKE2b-256 ce1e5bad082ac4ee827bbd0f009d1d183f63e596cc7c8cb8559c62bc6f62ce43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.9.win-amd64-py3.5.exe
Algorithm Hash digest
SHA256 91c02c6f6864adc3f4f32a03996595183af015d3386609b0b57a1499bd19bed6
MD5 1cb60ef25ad5110d96009fe76ed262b7
BLAKE2b-256 ae8d2b555a01c992e18fbcb93840c96ea6b45b15c803de1e237e1fe05c5fa705

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.9.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 80fe7bf1bfce258802f38fb82e2fa98cab04f5c20e4768fa2f39b3547d8bd50e
MD5 830c3db229bc436fbe8e5c2771a6941d
BLAKE2b-256 7cafc220e97a8f4af59f174b8e5aa8218de1c2e0b88cbe017edbce6989a5c656

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.9-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 7bbd1ce0606325f776c7adaf42db8674c76b47c0c4885f8c12645c618d748efc
MD5 0b4806a46a0cc036c922beb83eeaf411
BLAKE2b-256 7293022854f8430c6fece2de6156be7074951250a38d5310c6c88f8fb85a131a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.9-cp35-cp35m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 63446ead5da4d587c42f0eeb6611bc0f94bc6821837075d86c46d19498f4c823
MD5 e35265596e7a9f382dd35005af147c14
BLAKE2b-256 6fb6eedc07bb4b325a1fb49f29ea0b7b63ec0e8488ad0a7001281ee92c89546f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.9-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 44ea4dca9c2d46cae78784b783422a12cfb9e23e53bc0fe9f14e9e1eeca5b02f
MD5 f6c363c8db974ba6dc00a705457e3ece
BLAKE2b-256 fa67dca0141e5c20d07a7be84f3c7dd5092edf90881eaf4b184900c8c4fc7ffe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Khayyam-3.0.9-cp27-cp27m-macosx_10_9_intel.whl
Algorithm Hash digest
SHA256 3730728c8949d203b2c81de060b684ec3a59041bc28a913ed7d555410091db0c
MD5 4fa85c0c0e4f3e61be8f9cd35634cd63
BLAKE2b-256 25507d9ed84a38be4247cfdd1bad6cc70a7be4d2659d0d5f96af09537bcb89b0

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