Skip to main content

Accurate Hijri-Gregorian date converter based on the Umm al-Qura calendar

Project description

A Python package to convert accurately between Hijri and Gregorian dates using the Umm al-Qura calendar of Saudi Arabia.

Build Status Coverage Status Docs Status Python version support PyPI Package version License

Features

  • Accurate and tested conversion.

  • Optimized code performance compared to similar packages.

  • Intuitive, clean, and easy-to-use interface.

  • Most of methods and formats are similar to those of standard library.

  • Multilingual representation of weekday names, months, and calendar notations.

  • Easily extendable to support other natural languages.

  • Rich comparison between dates.

  • Validation of input dates.

  • Works on Python 3.6+ with zero dependencies.

  • Thoroughly tested on all supported python versions.

Installation

$ pip install -U hijri-converter

Basic Usage

from hijri_converter import convert

g = convert.Hijri(1403, 2, 17).to_gregorian()
print(g)
# 1982-12-02

h = convert.Gregorian(1982, 12, 2).to_hijri()
print(h)
# 1403-02-17

Online Tool

The following is a simple online conversion tool that was developed to convert between Hijri and Gregorian dates using the latest version of Hijri Converter package:

https://www.dralshehri.com/hijri-converter/

Documentation

Please see https://hijri-converter.readthedocs.io/ for full documentation of this package, including overview, benchmarking, usage examples and API reference.

Contributing

Contributions are welcome! See CONTRIBUTING.rst for more info.

Authors

The main author is Mohammed Alshehri — @dralshehri.

Acknowledgment

Thanks to R.H. van Gent for inspiration and help.

License

This package is distributed under an MIT license. See LICENSE.

Change Log

2.1.1

  • Added dmyformat() to return dates in DD/MM/YYYY format.

  • Deprecated slashformat() method to be replaced by dmyformat() method.

  • Fixed PyPI package not including a required file. Issue #3 by @PureTryOut.

  • Fixed some typos.

  • Updated tests.

2.1.0

This version has more accurate conversion and better internal code. Details are as follows:

  • Dropped support for the years before 1343 AH because the Umm al-Qura calendar was not established then.

  • Added validate parameter to Hijri object for optional disabling of Hijri date validation and improving performance.

  • Verified conversion against original references and updated the month_starts tuple for more accurate conversion.

  • Improved Hijri object rich comparison methods.

  • Improved date validation methods for better performance and readability.

  • Made the Hijri object hashable by adding a custom __hash__ method.

  • Refactored many internal methods (not affecting the API).

  • Other minor fixes, enhancements and performance boost.

2.0.0

In short, this version supports only lunar Hijri calendar on Python 3.6+, and the conversion is in complete agreement with the official Umm al-Qura calendar. Details are as follows:

  • Renamed the package to hijri-converter.

  • Dropped support for the solar Hijri calendar.

  • Dropped support for Python 3.5.

  • Refactored localization and ummalqura.py module.

  • Updated month_starts tuple in alignment with the Umm al-Qura calendar.

  • Added fromdate() classmethod to Gregorian object.

  • Added notation() method to Hijri and Gregorian objects.

  • Added more methods to Gregorian object including slashformat(), month_name(), day_name() and to_julian().

  • Renamed month_days() method of Hijri object to month_length().

  • Changed formatted string to use f-strings.

  • Improved documentation and examples.

  • Updated unit tests.

  • Fixed other minor issues and typos.

1.5.0

  • Added fromisoformat() classmethod to Hijri object.

  • Added support for rich comparison between Hijri dates.

  • Updated documentation and testing code.

  • Other minor fixes and enhancements.

1.4.0

  • Refactored conversion methods to improve performance.

  • Changed date validation back to be the default and removed optional parameter.

  • Added to_julian() method to Hijri object.

  • Updated documentation and testing code.

  • Other minor fixes and enhancements.

1.3.3

  • Fixed a bug in range validation for the Gregorian date.

  • Changed generic typing to built-in types.

  • Added more tests to cover the solar calendar.

  • Improved code structure and documentation.

1.3.2

  • Improved documentation and changelog.

1.3.1

  • Fixed README file.

1.3.0

  • Added documentation directory with an online version.

  • Changed date input validation to be optional and disabled by default.

  • Improved code readability and performance.

  • Other minor fixes and enhancements.

1.2.0

  • Added slashformat() method to Hijri object.

  • Improved date validation code.

  • Fixed some typos in documentation and docstrings.

1.0.1

  • Improved examples and documentation.

1.0.0

  • First release.

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

hijri-converter-2.1.1.tar.gz (32.7 kB view details)

Uploaded Source

Built Distribution

hijri_converter-2.1.1-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file hijri-converter-2.1.1.tar.gz.

File metadata

  • Download URL: hijri-converter-2.1.1.tar.gz
  • Upload date:
  • Size: 32.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7

File hashes

Hashes for hijri-converter-2.1.1.tar.gz
Algorithm Hash digest
SHA256 969e9b1e844c854b752243f697b14884c5d9112195889d3d8aa07d61af37fb21
MD5 7cf7f819d45fb92f2c2b410299d12784
BLAKE2b-256 8560a5dd9960168280c1c48e6536b2969b5155b31b7ab1e4b216fbd84c7a774a

See more details on using hashes here.

File details

Details for the file hijri_converter-2.1.1-py3-none-any.whl.

File metadata

  • Download URL: hijri_converter-2.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7

File hashes

Hashes for hijri_converter-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7e121c2bda9d2ff022cd5aa9bf66c34efc4032f3f777b485b17541fe4c09b26d
MD5 0db77610d37e3b9b915744885065d260
BLAKE2b-256 3e75e6da96d4ea768c8e6fa9676cffce80e457b66c3beb5711189959582870d6

See more details on using hashes here.

Supported by

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