ForHosting KIT · Developer Utilities

Persian Jalali to Gregorian date converter

Convert an explicit Persian Jalali Solar Hijri year, month, and day into the corresponding Gregorian calendar date.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

The converter uses the arithmetic 2,820-year Persian calendar cycle and performs the calculation directly, without consulting a remote service or relying on a device clock. The result includes a clear ISO-style Gregorian date plus separate year, month, and day values, making it useful for people, scripts, imports, historical records, and interoperable date fields.

Enter a complete Persian calendar date

Provide the Persian Solar Hijri year, month, and day as separate integers. Months 1 through 6 can contain 31 days, months 7 through 11 can contain 30 days, and month 12 contains 29 days in a common year or 30 in an arithmetic leap year. The converter checks those rules before calculating anything, so an impossible date is rejected instead of silently rolling into another month. Years from 1 through 9999 are accepted. Use the year as written in the Persian calendar, without adding a Gregorian offset and without supplying a time of day or time-zone abbreviation. The output is the corresponding proleptic Gregorian date in an ISO-style year-month-day string, together with numeric year, month, and day fields. Those separate fields are convenient when an application needs to populate database columns, build a localized display, or compare the result with another structured date. The conversion represents a calendar day rather than a moment during that day.

How the arithmetic conversion works

The calculation follows the arithmetic Persian calendar model based on a repeating 2,820-year cycle. It first maps the supplied Persian date to a Julian day number, a continuous day count that provides a neutral bridge between calendar systems. It then decomposes that day number with the Gregorian 400-year, 100-year, four-year, and one-year cycles to recover the Gregorian year, month, and day. Every step uses bounded integer arithmetic and fixed calendar constants. No current date, operating-system locale, browser time zone, network lookup, or historical table participates in the result. This makes repeated calls with the same input deterministic in the API and in the browser. The word “arithmetic” matters: some Persian calendar implementations use astronomical observations or official equinox calculations, which can differ from a fixed-cycle system for some distant years. This capability consistently applies the stated arithmetic convention, allowing callers to know exactly which model produced the answer and reproduce it independently.

Use the result safely in records and software

Treat the returned value as a conversion between named calendar dates, not as a Unix timestamp. A calendar date alone does not identify an instant until a time, time zone, and any relevant civil-time rules are supplied. If a database stores date-only values, the returned ISO-style string is normally the most direct field to save. If a system expects a timestamp, add the intended local time and zone in a separate, explicit step rather than assuming midnight UTC. This distinction prevents a date from appearing one day earlier or later when software applies an unintended offset. The arithmetic model is especially suitable for repeatable data migrations, validation pipelines, and archival transformations because it does not change with new observations or regional settings. For contemporary official or legal workflows, confirm that the receiving organization uses the same arithmetic convention, particularly if its policy specifies an observational Persian calendar. The API price is $0.002 per request, while the browser version performs the same pure conversion locally.

Normalize imported records

Convert Persian date columns into structured Gregorian values before loading records into a system that standardizes on Gregorian dates.

Check a document date

Find the Gregorian equivalent of a Persian calendar date printed on a form, certificate, invoice, or archived document.

Build deterministic calendar logic

Use a fixed arithmetic conversion in tests, integrations, and offline tools where identical inputs must always produce identical outputs.

Which Persian calendar does this converter use?

It uses the arithmetic Persian Solar Hijri calendar with a repeating 2,820-year cycle, rather than an observational equinox calculation.

Does the conversion depend on my time zone?

No. It converts one calendar day to another through fixed arithmetic and does not use the device clock, local time zone, or daylight-saving rules.

How are Persian leap years handled?

Leap years are determined by the same 2,820-year arithmetic cycle used for conversion. In an arithmetic leap year, month 12 can contain 30 days.

What happens if I enter an impossible date?

The request returns an invalid-input error. Month ranges and the permitted day count for the specified month and year are checked before conversion.

Is the result a timestamp?

No. The result is a Gregorian calendar date. Add a time and an explicit time zone separately if your application needs a timestamp.

What does the API request cost?

The API price is $0.002 per request. The same deterministic conversion is also available locally in the browser.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/date/persian-to-gregorian

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/date/persian-to-gregorian \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"year":1400,"month":1,"day":1}'
{
  "year": 1400,
  "month": 1,
  "day": 1
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "date.persian_to_gregorian",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →