{"id":16157686,"url":"https://github.com/theawiteb/past_date2word","last_synced_at":"2025-06-13T10:34:46.986Z","repository":{"id":45059673,"uuid":"411774835","full_name":"TheAwiteb/past_date2word","owner":"TheAwiteb","description":"Python library converts past date to text","archived":false,"fork":false,"pushed_at":"2022-01-11T23:30:05.000Z","size":43,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-05-02T02:57:13.205Z","etag":null,"topics":["date","date2word"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheAwiteb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-09-29T17:47:01.000Z","updated_at":"2021-10-20T04:30:48.000Z","dependencies_parsed_at":"2022-09-26T17:31:24.041Z","dependency_job_id":null,"html_url":"https://github.com/TheAwiteb/past_date2word","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAwiteb%2Fpast_date2word","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAwiteb%2Fpast_date2word/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAwiteb%2Fpast_date2word/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAwiteb%2Fpast_date2word/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheAwiteb","download_url":"https://codeload.github.com/TheAwiteb/past_date2word/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247578627,"owners_count":20961270,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["date","date2word"],"created_at":"2024-10-10T01:50:19.443Z","updated_at":"2025-04-07T01:41:07.117Z","avatar_url":"https://github.com/TheAwiteb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# past_date2word\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pypi.org/project/past_date2word/\"\u003e\n    \u003cimg alt=\"PyPI - Python Version\" src=\"https://img.shields.io/pypi/pyversions/past_date2word?color=9cf\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/past_date2word/\"\u003e\n    \u003cimg alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/past_date2word?color=9cf\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.gnu.org/licenses/gpl-3.0.html\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/l/quran-suras?color=9cf\u0026label=License\" alt=\"License\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/psf/black\"\u003e\n    \u003cimg alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/TheAwiteb/past_date2word/actions/workflows/python-app.yml\"\u003e\n    \u003cimg alt=\"past_date2word-test\" src=\"https://github.com/TheAwiteb/past_date2word/actions/workflows/python-app.yml/badge.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\npast_date2word is library helps you to convert the past date to text\n\n* [Requirements](#Requirements)\n* [Installation](#Installation)\n* [Examples](#Examples)\n\n  * [English](#English)\n    * [Seconds](#Seconds-EN)\n    * [Minutes](#Minutes-EN)\n    * [Hours](#Hours-EN)\n    * [Days](#Days-EN)\n    * [Weeks](#Weeks-EN)\n    * [Months](#Months-EN)\n    * [Years](#Years-EN)\n  * [Arabic](#Arabic)\n    * [Seconds](#Seconds-AR)\n    * [Minutes](#Minutes-AR)\n    * [Hours](#Hours-AR)\n    * [Days](#Days-AR)\n    * [Weeks](#Weeks-AR)\n    * [Months](#Months-AR)\n    * [Years](#Years-AR)\n\n* [License](#License)\n\n***\n## Requirements\n\n* **[python3.8](https://www.python.org/downloads/) +**\n* **[git](https://git-scm.com/)**\n* **[pip3](https://pip.pypa.io/en/stable/installation/)**\n\n***\n\n## Installation\n\nUse [PyPi](https://pypi.org) to install past_date2word.\n\n```bash\npip3 install past_date2word\n```\n\n***\n## Example\n\n\u003e NOTE: Not all cases will be written because they are many, do not worry, you can see the [tests file](tests/test_past_date2word.py) that contains all the possible cases (**if you think otherwise, add the test and do a PR, we will be happy with that**)\n\n\u003e NOTE: `with_ago` parameter will add `\"ago\"` to the end of the sentence if its `True`, and if not, he will not add it\n\n\u003e NOTE: `long_sentence` parameter will add the hours, minutes and seconds to the sentence if its `True`, and if not, he will not add it\n\n### English\n\n#### Seconds EN\n```python\ntime = datetime.now() - timedelta(seconds=1)\n\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=True)\n    == \"1 second\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=False)\n    == \"1 second ago\" # Output of past_date2word\n)\n```\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Minutes EN\n```python\ntime = datetime.now() - timedelta(minutes=9, seconds=34)\n\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=True)\n    == \"9 minutes and 34 seconds ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=True)\n    == \"9 minutes and 34 seconds\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=False)\n    == \"9 minutes ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=False)\n    == \"9 minutes\" # Output of past_date2word\n)\n```\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Hours EN\n```python\ntime = datetime.now() - timedelta(hours=12, minutes=44)\n\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=True)\n    == \"12 hours and 44 minutes ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=True)\n    == \"12 hours and 44 minutes\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=False)\n    == \"12 hours ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=False)\n    == \"12 hours\" # Output of past_date2word\n)\n```\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Days EN\n```python\ntime = datetime.now() - timedelta(days=5, hours=15)\n\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=True)\n    == \"5 days and 15 hours ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=True)\n    == \"5 days and 15 hours\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=False)\n    == \"5 days ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=False)\n    == \"5 days\" # Output of past_date2word\n)\n```\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Weeks EN\n```python\ntime = datetime.now() - timedelta(weeks=2, days=4)\n\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=True)\n    == \"2 weeks and 4 days ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=True)\n    == \"2 weeks and 4 days\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=False)\n    == \"2 weeks and 4 days ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=False)\n    == \"2 weeks and 4 days\" # Output of past_date2word\n)\n```\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Months EN\n```python\n# 4 weeks == 1 month\none_month_to_week = 4 * 1\n\ntime = datetime.now() - timedelta(weeks=(one_month_to_week * 3) + 2)\n\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=True)\n    == \"3 months and 2 weeks ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=True)\n    == \"3 months and 2 weeks\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=False)\n    == \"3 months and 2 weeks ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=False)\n    == \"3 months and 2 weeks\" # Output of past_date2word\n)\n```\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Years EN\n```python\n# 12 month == 1 year\n# 4 weeks == 1 month\none_month_to_week = 4 * 1\none_year_to_week = one_month_to_week * 12\n\ntime = datetime.now() - timedelta(\n    weeks=(one_year_to_week * 12) + (one_month_to_week * 5)\n)\n\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=True)\n    == \"12 years and 5 months ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=True)\n    == \"12 years and 5 months\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=True, long_sentence=False)\n    == \"12 years and 5 months ago\" # Output of past_date2word\n)\nassert (\n    past_date2word(date=time, language=\"en\", with_ago=False, long_sentence=False)\n    == \"12 years and 5 months\" # Output of past_date2word\n)\n```\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n### Arabic\n\n#### Seconds AR\n```python\ntime = datetime.now() - timedelta(seconds=13)\n\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=False)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=False)\n)\n```\n\u003cdiv dir=\"rtl\"\u003e\nالمخرجات\n\n```\n\"منذ 13 ثانية\"\n\"13 ثانية\"\n\"منذ 13 ثانية\"\n\"13 ثانية\"\n```\n\n\u003c/div\u003e\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Minutes AR\n```python\ntime = datetime.now() - timedelta(minutes=13, seconds=13)\n\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=False)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=False)\n)\n```\n\u003cdiv dir=\"rtl\"\u003e\nالمخرجات\n\n```\n\"منذ 13 دقيقة و 13 ثانية\"\n\"13 دقيقة و 13 ثانية\"\n\"منذ 13 دقيقة\"\n\"13 دقيقة\"\n```\n\n\u003c/div\u003e\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Hours AR\n```python\ntime = datetime.now() - timedelta(hours=13, minutes=13)\n\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=False)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=False)\n)\n```\n\u003cdiv dir=\"rtl\"\u003e\nالمخرجات\n\n```\n\"منذ 13 ساعة و 13 دقيقة\"\n\"13 ساعة و 13 دقيقة\"\n\"منذ 13 ساعة\"\n\"13 ساعة\"\n```\n\n\u003c/div\u003e\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Days AR\n```python\ntime = datetime.now() - timedelta(days=6, hours=15)\n\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=False)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=False)\n)\n```\n\u003cdiv dir=\"rtl\"\u003e\nالمخرجات\n\n```\n\"منذ 6 ايام و 15 ساعة\"\n\"6 ايام و 15 ساعة\"\n\"منذ 6 ايام\"\n\"6 ايام\"\n```\n\n\u003c/div\u003e\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Weeks AR\n```python\ntime = datetime.now() - timedelta(weeks=3, days=4)\n\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=False)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=False)\n)\n```\n\u003cdiv dir=\"rtl\"\u003e\nالمخرجات\n\n```\n\"منذ 3 اسابيع و 4 ايام\"\n\"3 اسابيع و 4 ايام\"\n\"منذ 3 اسابيع و 4 ايام\"\n\"3 اسابيع و 4 ايام\"\n```\n\n\u003c/div\u003e\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Months AR\n```python\none_month_to_week = 4 * 1\n\n\ntime = datetime.now() - timedelta(weeks=(one_month_to_week * 11) + 3)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=False)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=False)\n)\n```\n\u003cdiv dir=\"rtl\"\u003e\nالمخرجات\n\n```\n\"منذ 11 شهر و 3 اسابيع\"\n\"11 شهر و 3 اسابيع\"\n\"منذ 11 شهر و 3 اسابيع\"\n\"11 شهر و 3 اسابيع\"\n```\n\n\u003c/div\u003e\n\n**[[Back To Top 🔝]](#past_date2word)**\n\n#### Years AR\n```python\n# 12 month == 1 year\n# 4 weeks == 1 month\none_month_to_week = 4 * 1\none_year_to_week = one_month_to_week * 12\n\ntime = datetime.now() - timedelta(\n    weeks=(one_year_to_week * 12) + (one_month_to_week * 5)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=True)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=True, long_sentence=False)\n)\nprint(\n    past_date2word(date=time, language=\"ar\", with_ago=False, long_sentence=False)\n)\n```\n\u003cdiv dir=\"rtl\"\u003e\nالمخرجات\n\n```\n\"منذ 12 سنة و 5 اشهر\"\n\"12 سنة و 5 اشهر\"\n\"منذ 12 سنة و 5 اشهر\"\n\"12 سنة و 5 اشهر\"\n```\n\n\u003c/div\u003e\n\n***\n## License\n\n[GPLv3](https://www.gnu.org/licenses/gpl-3.0.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheawiteb%2Fpast_date2word","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheawiteb%2Fpast_date2word","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheawiteb%2Fpast_date2word/lists"}