{"id":31753291,"url":"https://github.com/shahabyazdi/date-object","last_synced_at":"2026-03-04T03:32:26.678Z","repository":{"id":42680686,"uuid":"289037347","full_name":"shahabyazdi/date-object","owner":"shahabyazdi","description":"JavaScript library for working with Date and Time in different calendars and locals","archived":false,"fork":false,"pushed_at":"2024-10-17T12:47:49.000Z","size":1165,"stargazers_count":14,"open_issues_count":7,"forks_count":10,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-09T17:44:41.183Z","etag":null,"topics":["arabic","calendar","calendars","datetime","format-date","gerogian","hijri","hindi","indian","indian-calendar","islamic-calendar","jalali","javascript","nodejs","persian","persian-calendar","shamsi"],"latest_commit_sha":null,"homepage":"https://shahabyazdi.github.io/date-object/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shahabyazdi.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-20T15:07:42.000Z","updated_at":"2024-11-04T10:23:46.000Z","dependencies_parsed_at":"2024-06-07T16:25:09.643Z","dependency_job_id":"e9169873-eb40-4f43-b54a-284e4e83a7c9","html_url":"https://github.com/shahabyazdi/date-object","commit_stats":{"total_commits":108,"total_committers":4,"mean_commits":27.0,"dds":0.05555555555555558,"last_synced_commit":"e04ec059f984b810e6c5e2cde154a4485214cabe"},"previous_names":["shahabyazdi/dateobject"],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/shahabyazdi/date-object","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahabyazdi%2Fdate-object","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahabyazdi%2Fdate-object/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahabyazdi%2Fdate-object/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahabyazdi%2Fdate-object/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shahabyazdi","download_url":"https://codeload.github.com/shahabyazdi/date-object/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahabyazdi%2Fdate-object/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30070765,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T03:25:38.285Z","status":"ssl_error","status_checked_at":"2026-03-04T03:25:05.086Z","response_time":59,"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":["arabic","calendar","calendars","datetime","format-date","gerogian","hijri","hindi","indian","indian-calendar","islamic-calendar","jalali","javascript","nodejs","persian","persian-calendar","shamsi"],"created_at":"2025-10-09T17:44:38.399Z","updated_at":"2026-03-04T03:32:26.650Z","avatar_url":"https://github.com/shahabyazdi.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Date Object\n\nsupported calendars: `gregorian` , `persian` , `arabic` , `indian`\ndefault: `gregorian`\n\nsupported locales: `en` , `fa` , `ar` , `hi`\ndefault: `en`\n\nReact: [react-date-object](https://github.com/shahabyazdi/react-date-object)\n\n[Descriptions](https://shahabyazdi.github.io/react-multi-date-picker/date-object/)\n\n# Versions before 2.0.0\n\nThe way to entering `calendars` and `locales` for the versions before 2.0.0 is different.\n\nTo see the readme file for v1.x click \u003ca href=\"https://github.com/shahabyazdi/date-object/tree/v1.x#readme\" target=\"_blank\"\u003ehere\u003c/a\u003e\n\n# 1- Install\n\n## 1-1- npm:\n\n```shell\nnpm install date-object --save\n```\n\n## 1-2- yarn:\n\n```shell\nyarn add date-object\n```\n\n## 1-3- jsDelivr:\n\n```javascript\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/date-object@latest/dist/umd/date-object.min.js\"\u003e\u003c/script\u003e\n```\n\n# 2- Usage\n\n## 2-1- NodeJS:\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar date = new DateObject();\n\nconsole.log(date.format()); //2021/06/10\n```\n\n## 2-1- Browser:\n\n```html\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n  \u003chead\u003e\n    \u003cmeta charset=\"UTF-8\" /\u003e\n    \u003cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" /\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /\u003e\n    \u003c!-- DateObject --\u003e\n    \u003cscript src=\"https://cdn.jsdelivr.net/npm/date-object@latest/dist/umd/date-object.min.js\"\u003e\u003c/script\u003e\n    \u003c!-- Optional Persian Calendar \u0026 Locale --\u003e\n    \u003cscript src=\"https://cdn.jsdelivr.net/npm/date-object@latest/calendars/umd/persian.min.js\"\u003e\u003c/script\u003e\n    \u003cscript src=\"https://cdn.jsdelivr.net/npm/date-object@latest/locales/umd/persian_fa.min.js\"\u003e\u003c/script\u003e\n    \u003ctitle\u003eDateObject\u003c/title\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n    \u003ch1\u003eGregorian:\u003c/h1\u003e\n    \u003cp id=\"gregorian\"\u003e\u003c/p\u003e\n\n    \u003ch1\u003ePersian:\u003c/h1\u003e\n    \u003cp id=\"persian\"\u003e\u003c/p\u003e\n\n    \u003cscript\u003e\n      const format = \"dddd DD MMMM YYYY\";\n      const gregorian = new DateObject();\n      const solarHijri = new DateObject({\n        calendar: persian,\n        locale: persian_fa,\n      });\n\n      document.getElementById(\"gregorian\").textContent =\n        gregorian.format(format);\n\n      document.getElementById(\"persian\").textContent =\n        solarHijri.format(format);\n    \u003c/script\u003e\n  \u003c/body\u003e\n\u003c/html\u003e\n```\n\n# 3- Calendars\n\n**You only need to import Calendar if you want to use a calendar other than Gregorian.**\n\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCalendar\u003c/th\u003e\n\u003cth\u003eCJS\u003c/th\u003e\n\u003cth\u003eES\u003c/th\u003e\n\u003cth\u003eUMD\u003c/th\u003e\n\u003c/th\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\n\u003ctr\u003e\n\u003ctd\u003eGregorian\u003c/td\u003e\n\u003ctd\u003e/calendars/cjs/gregorian.js\u003c/td\u003e\n\u003ctd\u003e/calendars/es/gregorian.js\u003c/td\u003e\n\u003ctd\u003e/calendars/umd/gregorian.min.js\u003c/td\u003e\n\u003ctr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003ePersian\u003c/td\u003e\n\u003ctd\u003e/calendars/cjs/persian.js\u003c/td\u003e\n\u003ctd\u003e/calendars/es/persian.js\u003c/td\u003e\n\u003ctd\u003e/calendars/umd/persian.min.js\u003c/td\u003e\n\u003ctr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003e* Jalali\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003e/calendars/cjs/jalali.js\u003c/td\u003e\n\u003ctd\u003e/calendars/es/jalali.js\u003c/td\u003e\n\u003ctd\u003e/calendars/umd/jalali.min.js\u003c/td\u003e\n\u003ctr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003eArabic\u003c/td\u003e\n\u003ctd\u003e/calendars/cjs/arabic.js\u003c/td\u003e\n\u003ctd\u003e/calendars/es/arabic.js\u003c/td\u003e\n\u003ctd\u003e/calendars/umd/arabic.min.js\u003c/td\u003e\n\u003ctr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003eIndian\u003c/td\u003e\n\u003ctd\u003e/calendars/cjs/indian.js\u003c/td\u003e\n\u003ctd\u003e/calendars/es/indian.js\u003c/td\u003e\n\u003ctd\u003e/calendars/umd/indian.min.js\u003c/td\u003e\n\u003ctr\u003e\n\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n**\\* Due to the use of conventional calculations in the Jalali calendar, converting a date to a Jalali calendar from other calendars may differ by one day compared to the Persian (solar Hijri) calendar.**\n\n\u003cdetails\u003e\n  \u003csummary\u003eExamples\u003c/summary\u003e\n\n## 3-1- Persian Calendar (Solar Hijri)\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar persian = require(\"date-object/calendars/cjs/persian\");\n\nvar date = new DateObject({ calendar: persian });\n\nconsole.log(date.format()); //1400/03/20\n```\n\n## 3-2- Arabic Calendar (Islamic Hijri)\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar arabic = require(\"date-object/calendars/cjs/arabic\");\n\nvar date = new DateObject({ calendar: arabic });\n\nconsole.log(date.format()); //1442/10/29\n```\n\n## 3-3- Indian Calendar\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar indian = require(\"date-object/calendars/cjs/indian\");\n\nvar date = new DateObject({ calendar: indian });\n\nconsole.log(date.format()); //1943/03/20\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n# 4- Locales\n\n**You only need to import Locale if you want to use a locale other than En.**\n\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth colspan=\"2\" rowspan=\"2\"\u003e\u003c/th\u003e\u003cth colspan=\"5\"\u003eCalendars\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eGregorian\u003c/th\u003e\n\u003cth\u003ePersian\u003c/th\u003e\n\u003cth\u003eJalali\u003c/th\u003e\n\u003cth\u003eArabic\u003c/th\u003e\n\u003cth\u003eIndian\u003c/th\u003e\n\u003c/tr\u003e\n\u003cthead/\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth rowspan=\"5\"\u003eLocales\u003c/th\u003e\n\u003cth\u003eEnglish\u003c/th\u003e\n\u003ctd\u003egregorian_en\u003c/td\u003e\n\u003ctd\u003epersian_en\u003c/td\u003e\n\u003ctd\u003epersian_en\u003c/td\u003e\n\u003ctd\u003earabic_en\u003c/td\u003e\n\u003ctd\u003eindian_en\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003cth\u003ePortuguese - BRAZIL\u003c/th\u003e\n\u003ctd\u003egregorian_pt_br\u003c/td\u003e\n\u003ctd\u003e-\u003c/td\u003e\n\u003ctd\u003e-\u003c/td\u003e\n\u003ctd\u003e-\u003c/td\u003e\n\u003ctd\u003e-\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003cth\u003eFarsi\u003c/th\u003e\n\u003ctd\u003egregorian_fa\u003c/td\u003e\n\u003ctd\u003epersian_fa\u003c/td\u003e\n\u003ctd\u003epersian_fa\u003c/td\u003e\n\u003ctd\u003earabic_fa\u003c/td\u003e\n\u003ctd\u003eindian_fa\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003cth\u003eArabic\u003c/th\u003e\n\u003ctd\u003egregorian_ar\u003c/td\u003e\n\u003ctd\u003epersian_ar\u003c/td\u003e\n\u003ctd\u003epersian_ar\u003c/td\u003e\n\u003ctd\u003earabic_ar\u003c/td\u003e\n\u003ctd\u003eindian_ar\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003cth\u003eHindi\u003c/th\u003e\n\u003ctd\u003egregorian_hi\u003c/td\u003e\n\u003ctd\u003epersian_hi\u003c/td\u003e\n\u003ctd\u003epersian_hi\u003c/td\u003e\n\u003ctd\u003earabic_hi\u003c/td\u003e\n\u003ctd\u003eindian_hi\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eExamples\u003c/summary\u003e\n\n## 4-1- Persian Calendar, Farsi Locale\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar persian = require(\"date-object/calendars/cjs/persian\");\nvar persian_fa = require(\"date-object/locales/cjs/persian_fa\");\n\nvar date = new DateObject({ calendar: persian, locale: persian_fa });\n\nconsole.log(date.format()); //۱۴۰۰/۰۳/۲۰\n```\n\n## 4-2- Arabic Calendar, Arabic Locale\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar arabic = require(\"date-object/calendars/cjs/arabic\");\nvar arabic_ar = require(\"date-object/locales/cjs/arabic_ar\");\n\nvar date = new DateObject({ calendar: arabic, locale: arabic_ar });\n\nconsole.log(date.format()); //١٤٤٢/١٠/٢٩\n```\n\n## 4-3- Indiann Calendar, Hindi Locale\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar indian = require(\"date-object/calendars/cjs/indian\");\nvar indian_hi = require(\"date-object/locales/cjs/indian_hi\");\n\nvar date = new DateObject({ calendar: indian, locale: indian_hi });\n\nconsole.log(date.format()); //१९४३/०३/२०\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n# 5- Examples\n\n## 5-1- new instance\n\n### 5-1-1- String (year month day hour minute second millisecond meridiem)\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar date = new DateObject(\"2020 8 21 11 55 36 100 am\");\n\nconsole.log(date.format(\"YYYY/MM/DD hh:mm:ss.SSS a\")); //2020/08/21 11:55:36.100 am\n\ndate = new DateObject(\"2020/08/01\");\n\nconsole.log(date.format(\"YYYY/MM/DD hh:mm:ss.SSS a\")); //2020/08/01 12:00:00.000 am\n```\n\n### 5-1-2- Number (unix time in milliseconds)\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar date = new DateObject(1597994736000);\n\nconsole.log(date.format(\"dddd DD MMMM @ hh:mm:ss.SSS a\")); //Friday 21 August @ 11:55:36.000 am\n```\n\n### 5-1-3- JavaScript Date\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar $date = new Date(2019, 8, 20);\nvar date = new DateObject($date);\n\nconsole.log(date.format()); //2019/09/20\n```\n\n### 5-1-4- DateObject\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar $date = new DateObject(\"2019/09/20\");\nvar date = new DateObject($date);\n\nconsole.log(date.format()); //2019/09/20\n```\n\n### 5-1-5- Object\n\n#### 5-1-5-1-\n\n```javascript\n{\n  date: String , Number(unix time in milliseconds), Date or DateObject, //default new Date()\n  calendar: Calendar, //default gregorian\n  locale: Locale, //default en\n  format: String, //default `YYYY/MM/DD`\n  ignoreList:Array//If the format contained words that should be ignored\n}\n\n```\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar persian = require(\"date-object/calendars/cjs/persian\");\nvar persian_fa = require(\"date-object/locales/cjs/persian_fa\");\nvar persian_en = require(\"date-object/locales/cjs/persian_en\");\n\nvar date = new DateObject({\n  date: new Date(),\n});\n\nconsole.log(date.format()); //2020/08/21\n\ndate = new DateObject({\n  date: new Date(),\n  calendar: persian,\n  locale: persian_fa,\n});\n\nconsole.log(date.format()); //۱۳۹۹/۰۵/۳۱\n\ndate = new DateObject({\n  date: \"31 Mordad 1399\",\n  format: \"DD MMMM YYYY\",\n  calendar: persian,\n  locale: persian_en,\n});\n\nconsole.log(date.format()); //31 Mordad 1399\n```\n\n#### 5-1-5-2-\n\n```javascript\n{\n  year: Number,\n  month: Number,\n  day: Number,\n  hour: Number, //default 0\n  minute: Number, //default 0\n  second: Number, //default 0\n  millisecond: Number, //default 0\n  calendar: Calendar, //default gregorian\n  locale: Locale, //default en\n  format: String, //default `YYYY/MM/DD`\n  ignoreList:Array//If the format contained words that should be ignored\n}\n\n```\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar persian = require(\"date-object/calendars/cjs/persian\");\nvar persian_en = require(\"date-object/locales/cjs/persian_en\");\nvar persian_fa = require(\"date-object/locales/cjs/persian_fa\");\n\nvar date = new DateObject({\n  year: 2020,\n  month: 8,\n  day: 21,\n  hour: 12,\n  minute: 20,\n  second: 36,\n  milisecond: 152,\n  format: \"dddd DD MMMM YYYY\",\n});\n\nconsole.log(date.format()); //Friday 21 August 2020\n\ndate = new DateObject({\n  year: 1399,\n  month: 5,\n  day: 31,\n  calendar: persian,\n  locale: persian_en,\n  format: \"dddd DD MMMM YYYY\",\n});\n\nconsole.log(date.format()); //Jomeh 31 Mordad 1399\n\ndate = new DateObject({\n  year: 1399,\n  month: 5,\n  day: 31,\n  calendar: persian,\n  locale: persian_fa,\n  format: \"dddd DD MMMM YYYY\",\n});\n\nconsole.log(date.format()); //جمعه ۳۱ مرداد ۱۳۹۹\n```\n\n## 5-2- convert(calendar:Calendar, locale?:Locale)\n\nIf you use the convert method without argument, the date will be converted to Gregorian calendar.\n\nThe second argument (Locale) is optional.\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar gregorian = require(\"date-object/calendars/cjs/gregorian\");\nvar persian = require(\"date-object/calendars/cjs/persian\");\nvar arabic = require(\"date-object/calendars/cjs/arabic\");\nvar indian = require(\"date-object/calendars/cjs/indian\");\n\nvar date = new DateObject();\n\nconsole.log(date.format()); //2020/10/31\n\ndate.convert(persian);\nconsole.log(date.format()); //1399/08/10\n\ndate.convert(arabic);\nconsole.log(date.format()); //1442/03/14\n\ndate.convert(indian);\nconsole.log(date.format()); //1942/08/09\n\ndate.convert(gregorian); //or date.convert()\nconsole.log(date.format()); //2020/10/31\n```\n\n## 5-3- format(token:String)\n\ndefault format is YYYY/MM/DD.\nto see all format types click [here](#6--Formatting-Tokens)\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar date = new DateObject();\n\nconsoel.log(date.format()); //2020/10/31\nconsoel.log(date.format(\"MM/DD/YYYY\")); //10/31/2020\nconsoel.log(date.format(\"MMM/DD/YYYY HH:mm:ss\")); //Oct/31/2020 18:17:28\nconsoel.log(date.format(\"dddd DD MMMM YYYY, hh:mm:ss A\")); //Saturday 31 October 2020, 06:19:18 PM\nconsoel.log(date.format(\"ddd DD MMM YYYY, hh:mm a\")); //Sat 31 Oct 2020, 06:20 pm\n```\n\n### formatting with ignore list:\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar date = new DateObject();\n\nconsole.log(\n  date.format(\"hours:HH minutes:mm seconds:ss\", [\"hours\", \"minutes\", \"seconds\"])\n); //hours:12 minutes:22 seconds:40\n\nconsole.log(date.format(\"it's HH o'clock\", [\"it's\", \"o'clock\"])); //it's 12 o'clock\n\nconsole.log(\n  date.format(`DD MMMM at hh:mm ${date.hour \u003e= 12 ? \"Afternoon\" : \"Morning\"}`, [\n    \"at\",\n    \"Afternoon\",\n    \"Morning\",\n  ])\n); //11 November at 12:22 Afternoon\n```\n\n## 5-4- setter methods\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar gregorian = require(\"date-object/calendars/cjs/gregorian\");\nvar persian = require(\"date-object/calendars/cjs/persian\");\nvar indian = require(\"date-object/calendars/cjs/indian\");\nvar gregorian_en = require(\"date-object/locales/cjs/gregorian_en\");\nvar persian_en = require(\"date-object/locales/cjs/persian_en\");\nvar indian_en = require(\"date-object/locales/cjs/indian_en\");\n\nvar date = new DateObject();\n\ndate\n  .setCalendar(gregorian)\n  .setFormat(\"YYYY-MM-DD HH:mm:ss.SSS\")\n  .setLocale(gregorian_en)\n  .setYear(2020)\n  .setMonth(9)\n  .setDay(21)\n  .setHour(12)\n  .setMinute(20)\n  .setSecond(14)\n  .setMillisecond(200);\n\nconsole.log(date.format()); //2020-09-21 12:20:14.200\n\ndate\n  .setCalendar(persian)\n  .setLocale(persian_en)\n  .setYear(1399)\n  .setMonth(9)\n  .setDay(21)\n  .setFormat(\"dddd DD MMMM YYYY\");\n\nconsole.log(date.format()); //Jom'eh 21 Azar 1399\n\ndate.setDate(new Date(2020, 9, 27)).setLocale(gregorian_en); //(calendar is set to gregorian)\n\nconsole.log(date.format()); //Tuesday 27 October 2020\n\ndate.setDate(\n  new DateObject({\n    calendar: indian,\n    locale: indian_en,\n    year: 1942,\n    month: 8,\n    day: 5,\n  })\n); //format is set based on given DateObject (default:YYYY/MM/DD)\n\nconsole.log(date.format()); //1942/08/05\n```\n\n## 5-5- get and set\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar date = new DateObject();\n\nconsole.log(date.format()); //2020/08/21\n\ndate.year += 2;\ndate.month += 2;\ndate.day += 2;\ndate.hour += 2;\ndate.minute += 2;\ndate.second += 2;\ndate.millisecond += 2;\n\nconsole.log(date.format()); //2022/10/23\n\nconsole.log(date.month);\n\n/**\n *  {\n *    name: 'October',\n *    shortName: 'Oct',\n *    length: 31,\n *    index: 9,\n *    number: 10,\n *    toString: [Function (anonymous)]\n *  }\n */\n\nconsole.log(date.weekDay);\n\n/**\n * {\n *   name: 'Sunday',\n *   shortName: 'Sun',\n *   index: 0,\n *   number: 1,\n *   toString: [Function (anonymous)]\n * }\n */\n\nvar { year, month, weekDay, day } = date;\n\nconsole.log(`${weekDay.name} ${year}/${month}/${day}`); //Sunday 2022/10/23\n\ndate.year = 2020;\ndate.month = 8;\ndate.day = 21;\n\ndate.isLeap; //true\ndate.isValid; //true\ndate.isUTC; //false\ndate.month.name; //August\ndate.month.length; //31\ndate.month.index; //7\ndate.month.number; //8\n\ndate.weekDay.name; //Friday\ndate.weekDay.index; //5\ndate.weekDay.number; //6\n\ndate.dayOfBeginning; //737658\ndate.dayOfYear; //234\ndate.daysLeft; //132\ndate.weekOfYear; //34\ndate.unix; //1597951800 (unix time in seconds)\n\ndate.weekDays; // array [{ name: 'Sunday', shortName: 'Sun', ...}]\ndate.months; //array [{ name: 'January', shortName: 'Jan', ...}]\ndate.leaps; //array [4,   8,  12,  16,  20,...]\n\ndate.calendar.name; //gregorian\n```\n\n## 5-6- parse(date:String)\n\nRemember that parsing date is based on the format you set\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar persian = require(\"date-object/calendars/cjs/persian\");\nvar persian_en = require(\"date-object/locales/cjs/persian_en\");\nvar date = new DateObject();\n\ndate._format = \"dddd DD MMMM YYYY\";\n\ndate.parse(\"Monday 24 August 2020\");\nconsole.log(date.format(\"YYYY/MM/DD\")); //2020/08/24\n\ndate.parse(\"Friday 07 August 2020\");\nconsole.log(date.format(\"YYYY-MM-DD\")); //2020-08-07\n\ndate\n  .setCalendar(persian)\n  .setLocale(persian_en)\n  .setFormat(\"YYYY/MM/DD\")\n  .parse(\"1399/06/03\");\nconsole.log(date.format()); //1399/06/03\n\ndate.setFormat(\"YYYY/MM/DD HH:mm\").parse(\"1399/06/03 12:32\");\nconsole.log(date.format(\"dddd DD MMMM @ hh:mm a\")); //Doshanbeh 03 Shahrivar @ 12:32 pm\n```\n\n## 5-7- getValue\n\n```javascript\nvar Dateobject = require(\"date-object\");\nvar arabic_ar = require(\"date-object/locales/cjs/arabic_ar.js\");\n\nvar date = new DateObject({\n  date: \"1442/01/01\",\n  calendar: arabic,\n  locale: arabic_ar,\n});\n\nconsole.log(date.getValue(\"M\")); //1\nconsole.log(date.format(\"M\")); //١\n\nconsole.log(typeof date.getValue(\"D\")); //number\nconsole.log(typeof date.format(\"D\")); //string\n\nconsole.log(Number(date.getValue(\"YYYY\"))); //1442\nconsole.log(Number(date.format(\"YYYY\"))); //NaN\n```\n\n## 5-8- add(duration:Number or String,type:String)\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth colspan=\"3\"\u003eTypes\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eyears\u003c/td\u003e\n    \u003ctd\u003eyear\u003c/td\u003e\n    \u003ctd\u003ey\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003emonths\u003c/td\u003e\n    \u003ctd\u003emonth\u003c/td\u003e\n    \u003ctd\u003eM\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003edays\u003c/td\u003e\n    \u003ctd\u003eday\u003c/td\u003e\n    \u003ctd\u003ed\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003ehours\u003c/td\u003e\n    \u003ctd\u003ehour\u003c/td\u003e\n    \u003ctd\u003eh\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eminutes\u003c/td\u003e\n    \u003ctd\u003eminute\u003c/td\u003e\n    \u003ctd\u003em\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eseconds\u003c/td\u003e\n    \u003ctd\u003esecond\u003c/td\u003e\n    \u003ctd\u003es\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003emilliseconds\u003c/td\u003e\n    \u003ctd\u003emillisecond\u003c/td\u003e\n    \u003ctd\u003ems\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar date = new DateObject(\"2020/10/07 5:35:24 pm\");\n\ndate.setFormat(\"YYYY/MM/DD hh:mm:ss.SSS\");\n\nconsole.log(date.add(2, \"years\").format()); //2022/10/07 05:35:24.000\nconsole.log(date.add(\"1\", \"month\").format()); //2022/11/07 05:35:24.000\nconsole.log(date.add(3, \"d\").format()); //2022/11/10 05:35:24.000\nconsole.log(date.add(4, \"hours\").format()); //2022/11/10 09:35:24.000\nconsole.log(date.add(1, \"minute\").format()); //2022/11/10 09:36:24.000\nconsole.log(date.add(\"20\", \"s\").format()); //2022/11/10 09:36:44.000\nconsole.log(date.add(100, \"milliseconds\").format()); //2022/11/10 09:36:44.100\n```\n\n## 5-9- subtract(duration:Number or String,type:String)\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth colspan=\"3\"\u003eTypes\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eyears\u003c/td\u003e\n    \u003ctd\u003eyear\u003c/td\u003e\n    \u003ctd\u003ey\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003emonths\u003c/td\u003e\n    \u003ctd\u003emonth\u003c/td\u003e\n    \u003ctd\u003eM\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003edays\u003c/td\u003e\n    \u003ctd\u003eday\u003c/td\u003e\n    \u003ctd\u003ed\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003ehours\u003c/td\u003e\n    \u003ctd\u003ehour\u003c/td\u003e\n    \u003ctd\u003eh\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eminutes\u003c/td\u003e\n    \u003ctd\u003eminute\u003c/td\u003e\n    \u003ctd\u003em\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eseconds\u003c/td\u003e\n    \u003ctd\u003esecond\u003c/td\u003e\n    \u003ctd\u003es\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003emilliseconds\u003c/td\u003e\n    \u003ctd\u003emillisecond\u003c/td\u003e\n    \u003ctd\u003ems\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar yesterday = new DateObject().subtract(1, \"day\");\n```\n\n## 5-10- set method\n\n### 5-10-1 set(key:String,value:Any)\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar indian = require(\"date-object/calendars/cjs/indian\");\nvar persian = require(\"date-object/calendars/cjs/persian\");\nvar indian_hi = require(\"date-object/locales/cjs/indian_hi\");\nvar persian_en = require(\"date-object/locales/cjs/persian_en\");\nvar date = new DateObject(); //2020/10/31\n\nconsole.log(date.set(\"year\", 2021)); //2021/10/31\nconsole.log(date.set(\"month\", 1)); //2021/01/31\nconsole.log(date.set(\"day\", 7)); //2021/01/07\nconsole.log(date.set(\"format\", \"MM/DD/YYYY\")); //01/07/2021\nconsole.log(date.set(\"calendar\", indian)); //10/17/1942\nconsole.log(date.set(\"locale\", indian_hi)); //१०/१७/१९४२\nconsole.log(date.set(\"date\", new Date())); //2020/10/31 (calendar is set to gregorian)\nconsole.log(\n  date.set(\"date\", new DateObject({ calendar: persian, locale: persian_en }))\n); //1399/08/10 (calendar \u0026 locale is set to given values)\n```\n\n### 5-10-2 set(object)\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar persian = require(\"date-object/calendars/cjs/persian\");\nvar gregorian = require(\"date-object/calendars/cjs/gregorian\");\nvar persian_en = require(\"date-object/locales/cjs/persian_en\");\nvar gregorian_en = require(\"date-object/locales/cjs/gregorian_en\");\n\nvar date = new DateObject(); //2020/10/31\n\nconsole.log(\n  date\n    .set({ calendar: persian, locale: persian_en, format: \"dddd DD MMMM YYYY\" })\n    .format()\n); //Shanbeh 10 Aban 1399\n\nconsole.log(\n  date\n    .set({\n      calendar: gregorian,\n      locale: gregorian_en,\n      year: 2020,\n      month: 11,\n      day: 12,\n    })\n    .format()\n); //Saturday 12 December 2020\n\nconsole.log(date.set(new DateObject().toObject()).format()); //2020/10/31\n\nconsole.log(\n  date.set({ format: \"Date:MM/DD/YYYY\", ignoreList: [\"Date\"] }).format()\n); //Date:10/31/2020\n```\n\n## 5-11- toUTC()\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar arabic = require(\"date-object/calendars/cjs/arabic\");\nvar gregorian = require(\"date-object/calendars/cjs/gregorian\");\nvar arabic_en = require(\"date-object/locales/cjs/arabic_en\");\nvar gregorian_en = require(\"date-object/locales/cjs/gregorian_en\");\nvar date = new Date(); //Wed Oct 14 2020 11:12:18 GMT+0330\n\nvar dateObject = new DateObject({\n  date,\n  calendar: arabic,\n  locale: arabic_en,\n  format: \"ddd, DD MMM YYYY HH:mm:ss\",\n});\n\nconsole.log(dateObject.format()); //Arb, 26 Sa 1442 11:12:18\n\nconsole.log(`\ndateUTC      : ${date.toUTCString()}\narabicUTC    : ${dateObject.toUTC().toString()}\ngregorianUTC : ${dateObject.convert(gregorian, gregorian_en).toString()}\n`);\n\n/**\n * dateUTC      : Wed, 14 Oct 2020 07:42:18 GMT\n * arabicUTC    : Arb, 26 Sa 1442 07:42:18\n * gregorianUTC : Wed, 14 Oct 2020 07:42:18\n */\n```\n\n## 5-12- custom months, week days \u0026 digits\n\nSee the example below in case you want to use your personal data instead of default months, week days \u0026 digits\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar date = new DateObject();\n\nconsole.log(date.format(\"MMMM MMM\")); //November Nov\nconsole.log(date.format(\"dddd ddd\")); //Monday Mon\nconsole.log(date.format(\"D\")); //2\n\ndate.months = [\n  [\"jan\", \"j\"], //[[\"name\",\"shortName\"], ... ]\n  [\"feb\", \"f\"],\n  [\"mar\", \"m\"],\n  [\"apr\", \"a\"],\n  [\"may\", \"m\"],\n  [\"jun\", \"j\"],\n  [\"jul\", \"j\"],\n  [\"aug\", \"a\"],\n  [\"sep\", \"s\"],\n  [\"oct\", \"o\"],\n  [\"nov\", \"n\"],\n  [\"dec\", \"d\"],\n];\n\ndate.weekDays = [\n  [\"su\", \"s\"], //[[\"name\",\"shortName\"], ... ]\n  [\"mo\", \"m\"],\n  [\"tu\", \"t\"],\n  [\"we\", \"w\"],\n  [\"th\", \"t\"],\n  [\"fr\", \"f\"],\n  [\"sa\", \"s\"],\n];\n\n/**\n * This is just a test to display digits.\n * The Greek number system does not work like this.\n */\ndate.digits = [\"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"];\n\nconsole.log(date.format(\"MMMM MMM\")); //nov n\nconsole.log(date.format(\"dddd ddd\")); //mo m\nconsole.log(date.format(\"D\")); //II\n\nconsole.log(date.month);\n\n/**\n *{\n * name: 'nov',\n * shortName: 'n',\n * length: 30,\n * index: 10,\n * number: 11,\n * toString: [Function (anonymous)]\n * valueOf: [Function: valueOf]\n *}\n */\n\nconsole.log(date.weekDay);\n\n/**\n *{\n * name: 'mo',\n * shortName: 'm'\n * index: 1,\n * number: 2,\n * toString: [Function: toString],\n * valueOf: [Function: valueOf]\n *}\n */\n\nconsole.log(date.digits);\n\n/**\n * [\n *  '',    'I',   'II',\n *  'III', 'IV',  'V',\n *  'VI',  'VII', 'VIII',\n *  'IX'\n * ]\n */\n```\n\nYou can use `date.setMonths(months).setWeekDays(weekDays).setDigits(digits)` as well\n\n## 5-13- other methods\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar date = new DateObject();\n\nconsole.log(date.toFirstOfWeek().format()); //2020/08/16\nconsole.log(date.toFirstOfMonth().format()); //2020/08/01\nconsole.log(date.toFirstOfYear().format()); //2020/01/01\nconsole.log(date.toFirstWeekOfYear().format()); //2020/01/05\nconsole.log(date.toLastOfMonth().format()); //2020/01/31\nconsole.log(date.toLastOfWeek().format()); //2020/02/01\nconsole.log(date.toLastOfYear().format()); //2020/12/31\nconsole.log(date.toLastWeekOfYear().format()); //2020/12/27\n\nconsole.log(date.toString()); //2020/12/27\nconsole.log(date.toDate()); //2020-12-27T07:38:34.724Z\nconsole.log(date.toUnix()); //1609054714 (unix time in seconds)\nconsole.log(date.toJulianDay()); //2459210\nconsole.log(date.toObject());\n/**\n *{\n *  year: 2020,\n *  month: {\n *    name: 'December',\n *    shortName: 'Dec',\n *    length: 31,\n *    index: 11,\n *    number: 12,\n *    toString: [Function: toString],\n *    valueOf: [Function: valueOf]\n *  },\n *  day: 27,\n *  weekDay: {\n *    name: 'Sunday',\n *    shortName: 'Sun',\n *    index: 0,\n *    number: 1,\n *    toString: [Function: toString],\n *    valueOf: [Function: valueOf]\n *  },\n *  hour: 11,\n *  minute: 8,\n *  second: 34,\n *  millisecond: 724,\n *  weekOfYear: 52,\n *  dayOfYear: 362,\n *  daysLeft: 4,\n *  calendar: {\n *    name: 'gregorian',\n *    startYear: 1,\n *    yearLength: 365,\n *    epoch: 1721424,\n *    century: 20,\n *    weekDaysIndex: [\n *      0, 1, 2, 3,\n *      4, 5, 6\n *    ],\n *    getMonthLengths: [Function: getMonthLengths],\n *    isLeap: [Function: isLeap],\n *    getLeaps: [Function: getLeaps],\n *    getDayOfYear: [Function: getDayOfYear],\n *    getAllDays: [Function: getAllDays],\n *    leapsLength: [Function: leapsLength],\n *    guessYear: [Function: guessYear]\n *  },\n *  locale: {\n *    months: [\n *      [Array], [Array],\n *      [Array], [Array],\n *      [Array], [Array],\n *      [Array], [Array],\n *      [Array], [Array],\n *      [Array], [Array]\n *    ],\n *    weekDays: [\n *      [Array], [Array],\n *      [Array], [Array],\n *      [Array], [Array],\n *      [Array]\n *    ],\n *    digits: [\n *      '0', '1', '2', '3',\n *      '4', '5', '6', '7',\n *      '8', '9'\n *    ],\n *    meridiems: [ [Array], [Array] ]\n *  },\n *  format: 'YYYY/MM/DD',\n *  ignoreList: []\n *}\n */\nconsole.log(date.toJSON()); //1609054714724\n\nconsole.log(JSON.stringify({ date })); //{\"date\":1609054714724}\nconsole.log(new DateObject(date.toJSON()).format()); //2020/12/27\n```\n\n## 5-14 valueOf()\n\nreturns unix time in milliseconds\n\n```javascript\nvar DateObject = require(\"date-object\");\n\nvar persian_calendar = require(\"date-object/calendars/cjs/persian\");\nvar arabic_calendar = require(\"date-object/calendars/cjs/arabic\");\nvar indian_calendar = require(\"date-object/calendars/cjs/indian\");\n\nvar gregorian = new DateObject();\nvar persian = new DateObject({ date: gregorian, calendar: persian_calendar });\nvar arabic = new DateObject({ date: gregorian, calendar: arabic_calendar });\nvar indian = new DateObject({ date: gregorian, calendar: indian_calendar });\n\nconsole.log(gregorian.valueOf(), gregorian.format()); //1604824018304 2020/11/08\nconsole.log(persian.valueOf(), persian.format()); //1604824018304 1399/08/18\nconsole.log(indian.valueOf(), indian.format()); //1604824018304 1942/08/17\nconsole.log(arabic.valueOf(), arabic.format()); //1604824018304 1442/03/22\n\nconsole.log(persian - gregorian === 0); //true\n```\n\n## 5-15- using calendars, format \u0026 locales\n\n```javascript\nvar DateObject = require(\"date-object\");\nvar gregorian = require(\"date-object/calendars/cjs/gregorian\");\nvar persian = require(\"date-object/calendars/cjs/persian\");\nvar arabic = require(\"date-object/calendars/cjs/arabic\");\nvar persian_fa = require(\"date-object/locales/cjs/persian_fa\");\nvar gregorian_en = require(\"date-object/locales/cjs/gregorian_en\");\n\nvar date = new DateObject({\n  calendar: gregorian,\n  format: \"dddd DD MMMM\",\n});\n\nconsole.log(date.format()); //Friday 21 August\n\ndate.calendar = persian;\ndate.locale = persian_fa; //جمعه 31 مرداد\nconsole.log(date.format());\n\ndate._format = \"YY/MM/DD\";\nconsole.log(date.format()); //۹۹/۰۵/۳۱\n\ndate.setCalendar(gregorian).setLocale(gregorian_en);\nconsole.log(date.format()); //20/08/21\n\ndate = new DateObject(new Date());\n\nconsole.log(date.convert(persian).format()); //1399/05/31\nconsole.log(date.convert(arabic).format()); //1442/01/02\n```\n\n# 6- Formatting Tokens\n\n| Token |            Example            |         Description          | Availability (Parse /Format) |\n| ----- | :---------------------------: | :--------------------------: | ---------------------------- |\n| YYYY  |             2020              |          full year           | both                         |\n| YY    |              20               |        2 digits year         | both                         |\n| MMMM  |           December            |          month name          | both                         |\n| MMM   |              Dec              |       month short name       | both                         |\n| MM    |        03, 09, 10, ...        |    2 digits month number     | both                         |\n| M     |         3, 9, 10, ...         |         month number         | both                         |\n| DDDD  |              09               |         day of year          | format                       |\n| DDD   |               9               |         day of year          | format                       |\n| DD    |      03, 09, 10, 17, ...      |    2 digits day of month     | both                         |\n| D     |         3, 9 ,10, 17          |         day of month         | both                         |\n| WW    |      01, 03, 24, 33, ...      |         week of year         | format                       |\n| W     |       1, 3, 24. 33, ...       |         week of year         | format                       |\n| dddd  | Saturday, Sunday, Monday, ... |        week day name         | format                       |\n| ddd   |      Sat, Sun, Mon, ...       |     week day short name      | format                       |\n| dd    |         01,02,...,07          |   2 digits week day number   | format                       |\n| d     |           1,2,...,7           |       week day number        | format                       |\n| HH    |      03, 09, 10, 17,...       | 2 digits hour (24 hour mode) | both                         |\n| H     |       3, 9, 10, 17,...        |     hour (24 hour mode)      | both                         |\n| hh    |      03, 09, 10, 17,...       | 2 digits hour (12 hour mode) | both                         |\n| h     |       3, 9, 10, 17,...        |     hour (12 hour mode)      | both                         |\n| mm    |      03, 09, 10, 17,...       |       2 digits minute        | both                         |\n| m     |       3, 9, 10, 17,...        |            minute            | both                         |\n| ss    |      03, 09, 10, 17,...       |       2 digits second        | both                         |\n| s     |       3, 9, 10, 17,...        |            second            | both                         |\n| SSS   |              100              |     3 digits millisecond     | both                         |\n| SS    |              10               |     2 digits millisecond     | both                         |\n| S     |               1               |     1 digit millisecond      | both                         |\n| A     |              AM               |           meridiem           | both                         |\n| a     |              am               |      meridiem lowercase      | both                         |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshahabyazdi%2Fdate-object","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshahabyazdi%2Fdate-object","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshahabyazdi%2Fdate-object/lists"}