{"id":36333622,"url":"https://github.com/opencafe/datium","last_synced_at":"2026-01-11T12:02:28.477Z","repository":{"id":35089196,"uuid":"39247299","full_name":"opencafe/datium","owner":"opencafe","description":":alarm_clock: The flexible DataTime Package written in PHP","archived":false,"fork":false,"pushed_at":"2019-08-06T09:39:10.000Z","size":786,"stargazers_count":19,"open_issues_count":2,"forks_count":7,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-09-21T12:37:24.101Z","etag":null,"topics":["calendar","calendars","custom-calendar","custom-calendars","date-converter","date-format","date-parser","datetime","jalali","jalali-calendar","kurdish","kurdishcalendar","leap-year","php"],"latest_commit_sha":null,"homepage":"http://opencafe.github.io/datium","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opencafe.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":"2015-07-17T09:50:07.000Z","updated_at":"2023-10-01T05:43:48.000Z","dependencies_parsed_at":"2022-08-18T01:05:51.334Z","dependency_job_id":null,"html_url":"https://github.com/opencafe/datium","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/opencafe/datium","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencafe%2Fdatium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencafe%2Fdatium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencafe%2Fdatium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencafe%2Fdatium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opencafe","download_url":"https://codeload.github.com/opencafe/datium/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencafe%2Fdatium/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28302043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T11:18:18.743Z","status":"ssl_error","status_checked_at":"2026-01-11T11:07:56.842Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["calendar","calendars","custom-calendar","custom-calendars","date-converter","date-format","date-parser","datetime","jalali","jalali-calendar","kurdish","kurdishcalendar","leap-year","php"],"created_at":"2026-01-11T12:02:28.145Z","updated_at":"2026-01-11T12:02:28.459Z","avatar_url":"https://github.com/opencafe.png","language":"PHP","readme":"# Datium\n\n[![Build Status](https://travis-ci.org/opencafe/datium.svg?branch=master)](https://travis-ci.org/opencafe/datium)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/opencafe/datium/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/opencafe/datium/?branch=master)\n[![Latest Stable Version](https://poser.pugx.org/opencafe/datium/v/stable)](https://packagist.org/packages/opencafe/datium)\n[![Total Downloads](https://poser.pugx.org/opencafe/datium/downloads)](https://packagist.org/packages/opencafe/datium)\n[![Join the chat at https://gitter.im/opencafe/datium](https://badges.gitter.im/opencafe/datium.svg)](https://gitter.im/opencafe/datium?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![npm](https://img.shields.io/npm/l/express.svg?maxAge=2592000)]()\n\nAwesome DateTime package written in PHP, with generalization support in calendar and translation, which makes Datium powerful and simple.\n\n* Simplicity in code and logic\n* Expandable in every part\n* Hijri, Jalali, Julian and Kurdish Calendars support\n\n# Support\n* ^PHP:5.4\n* PHP:7\n\n# Installation\n\n## Via Composer\n\n```js\ncomposer require opencafe/datium\n```\n\n## Manual\nJust require ```Datium.php``` in your project and use Datium namespace as following example:\n\n```js\nrequire_once 'src/Datium.php';\n\nuse OpenCafe\\Datium;\n\necho Datium::now()-\u003eget();\n```\n\n# Usage\nSimply get what you want:\n\nAs datium output\n\n```js\nDatium::now()-\u003eget(); // ex: 2016-01-01 00:00:00\n\nDatium::now()-\u003etimestamp(); // ex: 1420057800\n\nDatium::now()-\u003eget('timestamp'); // ex: 1420057800\n```\nOr working with date as simple as you need:\n\n```js\nDatium::now()-\u003eadd('1 day')-\u003eget(); // ex: 2016-01-02 00:00:00\n```\n\n## Get\n\nGet Datium as DateTime PHP object:\n\n```js\nDatium::now()-\u003eobject();\n```\n\nOr return it as simple date and time string:\n\n```js\nDatium::now()-\u003eget();\n```\n\nAnd even with custom PHP YMD [format](http://php.net/manual/en/function.date.php):\n\n```js\nDatium::now()-\u003eget( 'l jS F Y h:i:s A' );\n```\n\nTimestamp format:\n\n```js\nDatium::create(2016,10,16)-\u003eget('timestamp');\n// Result : 1476563400\n```\n\nEasy usage:\n\n```js\nDatium::now()-\u003eall();\n\n// Result\nobject(stdClass)#5 (6) {\n  [\"second\"]=\u003e\n  string(2) \"03\"\n  [\"minute\"]=\u003e\n  string(2) \"10\"\n  [\"hour\"]=\u003e\n  string(2) \"15\"\n  [\"day\"]=\u003e\n  string(2) \"12\"\n  [\"month\"]=\u003e\n  string(2) \"10\"\n  [\"year\"]=\u003e\n  string(4) \"2016\"\n}\n\nDatium::now()-\u003eall()-\u003eyear;    // 2016\nDatium::now()-\u003eall()-\u003emonth;   // 10\nDatium::now()-\u003eall()-\u003eday;     // 12\nDatium::now()-\u003eall()-\u003ehour;    // 15\nDatium::now()-\u003eall()-\u003eminute;  // 10\nDatium::now()-\u003eall()-\u003esecond;  // 03\n```\n\n\n## Create\nYou can also simply create new time:\n\n```js\n// Create with YMD\nDatium::create( 2016, 1, 1, 12, 56, 13 )-\u003eget(); //ouput: 2016-01-01 12:56:13\n\n// Create with YMD without time\nDatium::create( 2016, 1, 1 )-\u003eget(); // output: 2016-01-01 12:56:13\n\n// Create with timestamp\nDatium::createTimestamp( 1420057800 )-\u003eget() // output =\u003e 2015-01-01 00:00:00\n```\n\n## Add Date\nThis method allow you add some year, month, week, day, hour, minute and second to current date.\n\n```js\n// If current date is 2016-01-01 00:00:00 then:\n\n// Add 3 years\nDatium::now()-\u003eadd('3 year')-\u003eget();\n// output =\u003e 2019-01-01 00:00:00\n\n// Add 1 week\nDatium::create(2016, 1, 1)-\u003eadd('1 week')-\u003eget();\n// output =\u003e 2016-01-08 00:00:00\n\n// Add one month\nDatium::now()-\u003eadd('1 month')-\u003eget()\n// output =\u003e 2016-02-01 00:00:00\n\n// Add 1 year, 3 month and 2 days\nDatium::now()-\u003eadd('1 year')\n             -\u003eadd('3 month')\n             -\u003eadd('2 day')\n             -\u003eadd('1 hour')\n             -\u003eadd('2 minute')\n             -\u003eadd('3 second')\n             -\u003eget();\n// output =\u003e 2017-04-03 01:02:03\n\n```\n\n## Sub Date\nSub some year, month, day, hour, minute and second from current date.\n\n```js\n// If current date is 2016-01-01 00:00:00 then:\n\n\n// Sub 3 years\nDatium::now()-\u003esub('3 year')-\u003eget();\n// output =\u003e 2013-01-01 00:00:00\n\n// Sub 1 week\nDatium::create(2016, 1, 8)-\u003esub('1 week')-\u003eget();\n// output =\u003e 2016-01-01 00:00:00\n\n// Sub one month\nDatium::now()-\u003esub('1 month')-\u003eget()\n// output =\u003e 2015-12-01 00:00:00\n\n// Sub 1 year, 3 month and 2 days\nDatium::now()-\u003esub('1 year')\n             -\u003esub('3 month')\n             -\u003esub('2 day')\n             -\u003eget();\n// output =\u003e 2014-09-29 00:00:00\n```\n\n## Date Difference\nThis method will return the difference between two specific date with php date interval type.\n\n```js\n// current generated date difference with next 5000 days\n$diff = Datium::diff(\n    Datium::now()-\u003eobject(),\n    Datium::now()-\u003eadd('5000 day')-\u003eobject()\n);\n\necho $diff-\u003edays;\n// output =\u003e 5000\necho $diff-\u003eyear . ' year, ' .  $diff-\u003emonth . ' month, ' . $diff-\u003eday . ' day ';\n// ouput =\u003e 13 year, 8 month, 7 day\n\n```\n\n### Human readable time difference\nDatium also supports human readable date and time difference.\n\n```js\n// current generated date difference with next 5000 days\n$diff = Datium::diff(\n    Datium::now()-\u003eobject(),\n    Datium::now()-\u003eadd('5000 day')-\u003eobject()\n)-\u003esimple-\u003eget();\n\n// result =\u003e 13 years ago\n\n// current generated date difference with next 5000 days\n$diff = Datium::diff(\n    Datium::now()-\u003eobject(),\n    Datium::now()-\u003esub('5000 day')-\u003eobject()\n)-\u003esimple-\u003eget();\n\n// result =\u003e 13 years remaining\n\n// current generated date difference with next 5000 days\n$diff = Datium::diff(\n    Datium::now()-\u003eobject(),\n    Datium::now()-\u003eadd('5000 day')-\u003eobject()\n)-\u003esimple-\u003elang('fa')-\u003eget();\n\n// result =\u003e ۱۳ سال پیش\n\n```\n\n## Leap year\nDefine leap year of current year with generalization support.\n\n\n```js\n// If current date was 2016\n\n// Is 2016 a leap year?\nDatium::now()-\u003eleap()-\u003eget();\n// output =\u003e FALSE\n\n// Is 2017 a leap year?\nDatium::now()-\u003eadd('1 year')-\u003eleap()-\u003eget();\n// output =\u003e TRUE\n\nDatium::now()-\u003eto('hijri')-\u003eleap()-\u003eget();\n```\n\n## Get day of date\nThis method returns day of week or day of year with generalization support, you can add this feature to your custom calendars like other supported calendars in Datium.\n\n## Day of Year\nWhat the day is in current year:\n\n```js\n// If current date was 2015-09-03\n\nDatium::now()-\u003edayOf()-\u003eyear();\n// output =\u003e 246\n\n// Day of year to Gregorian\nDatium::now()-\u003edayOf()-\u003eyear();\n\n// Day of year to Jalali\nDatium::now()-\u003eto( 'jalali' )-\u003edayOf()-\u003eyear();\n\n// Day of year to Hijri\nDatium::now()-\u003eto( 'hijri' )-\u003edayOf()-\u003eyear();\n\n// Day of year to kurdish\nDatium::now()-\u003eto( 'kurdish' )-\u003edayOf()-\u003eyear();\n\n```\n\n## Day of Week\nWhat day of week is current day:\n\n```js\n\n// If current date 'll be 2015-09-09 Thursday\nDatium::now()-\u003edayOf()-\u003eweek();\n// output =\u003e 5\n\n// Day of week to Gregorian\nDatium::now()-\u003edayOf()-\u003eweek();\n\n// Day of week to Jalali\nDatium::now()-\u003eto( 'jalali' )-\u003edayOf()-\u003eweek();\n\n// Day of week to Hijri\nDatium::now()-\u003eto( 'hijri' )-\u003edayOf()-\u003eweek();\n\n// Day of week to Kurdish\nDatium::now()-\u003eto( 'kurdish' )-\u003edayOf()-\u003eweek();\n\n```\n\n## Last Day of Month\nHow many days is current month\n```js\n\n// Last Day of Current Month to Gregorian\nDatium::now()-\u003edayOf()-\u003elastDayMonth();\n\n// Last Day of Current Month to Jalali\nDatium::now()-\u003eto( 'jalali' )-\u003edayOf()-\u003elastDayMonth();\n\n// Last Day of Current Month to Hijri\nDatium::now()-\u003eto( 'hijri' )-\u003edayOf()-\u003elastDayMonth();\n\n// Last Day of Current Month to Kurdish\nDatium::now()-\u003eto( 'kurdish' )-\u003edayOf()-\u003elastDayMonth();\n\n```\n\n## Generalization\n\n### Calendar generalization\nDatium supports calendar generalization, you can add customized calendars to Datium and used them as it's own default calendars.\n\n```js\nDatium::create( 2015, 11, 9 )-\u003eto( 'jalali' )-\u003eget()\n//Convert Gregorian to Jalali calendar: 1394-08-18 00:00:00\n\nDatium::create( 2015, 11, 9 )-\u003eto( 'hijri' )-\u003eget()\n//Convert Gregorian to Hijri calendar: 1437-01-26 00:00:00\n\nDatium::create( 2015, 11, 9 )-\u003eto( 'kurdish' )-\u003eget()\n//Convert Gregorian to Kurdish calendar: 2715-08-18 00:00:00\n\n```\n\nConvert all calendars which supported on Datium or event your customized calendars as simple as possible:\n\n```js\nDatium::create( 1395, 7, 25 )-\u003efrom( 'jalali' )-\u003eget(); // Gregorian is default value for destination calendar.\n// result: 2016-10-16 00:00:00\n\nDatium::create( 1395, 7, 25 )-\u003efrom( 'jalali' )-\u003eto( 'hijri' )-\u003eget();\n// result: 1438-01-14 00:00:00\n```\n\n### Translation Generalization\nGeneralization in translation is another Datium generalization support.\n\n```js\nDatium::create( 2016, 6, 25, 12, 0, 0 )-\u003eto( 'jalali' )-\u003elang( 'fa' )-\u003eget('l jS F Y h:i:s A');\n// ex: شنبه ۵ تیر ۱۳۹۵ ۱۲:۰۰:۰۰ ب.ظ\n\nDatium::create( 2016, 6, 25, 12, 0, 0 )-\u003eto( 'jalali' )-\u003eget('l jS F Y h:i:s A');\n// ex: Shanbe 5th Tir 1395 12:00:00 PM\n\nDatium::create(2016, 6, 25, 12, 0, 0)-\u003eto('hijri')-\u003eget('l jS F Y h:i:s A');\n// ex: as-Sabt 19th Ramadan 1437 12:00:00 PM\n\nDatium::create(2016, 6, 25, 12, 0, 0)-\u003eto('kurdish')-\u003eget('l jS F Y h:i:s A');\n// ex: Şeme 5th Puşper 2716 12:00:00 PM\n\nDatium::create(2016, 6, 25, 12, 0, 0)-\u003eget('l jS F Y h:i:s A');\n// ex: Saturday 25th June 2016 12:00:00 PM\n```\n\n### Change Configuration\n\nYou can change any configuration after initialize Datium object.\n\n```js\n$datium = Datium::create(\n                $date-\u003eformat('Y'),\n                $date-\u003eformat('m'),\n                $date-\u003eformat('d'),\n                $date-\u003eformat('h'),\n                $date-\u003eformat('i'),\n                $date-\u003eformat('s')\n            );\n$datium-\u003esetConfig(['timezone'=\u003e'Europe/Istanbul']);\n```\n\n#### Default configuration\n\n```\n[\n  'timezone' =\u003e 'Asia/Tehran',\n  'language' =\u003e     'en',\n  'default_calendar' =\u003e 'gregorian',\n  'date_interval' =\u003e [ 'D', 'M', 'Y', 'HT', 'MT', 'ST' ],\n  'date_simple' =\u003e [ 'day', ' month', ' year', ' hour', ' minute', ' second' ],\n]\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencafe%2Fdatium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopencafe%2Fdatium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencafe%2Fdatium/lists"}