Minguo ROC to Gregorian date converter
Convert an explicit Minguo Republic of China calendar date into the corresponding Gregorian date without relying on a timezone, network service, or current clock.
Run — free
Enter the Minguo year, month, and day in year-MM-DD form, such as 113-07-25. The converter adds 1911 to the year, preserves the month and day, and checks that the resulting Gregorian date is real, including the correct leap-year rule. The response includes both complete dates and their individual numeric parts for straightforward use in records and integrations.
Enter an unambiguous Minguo calendar date
Provide the date as a positive Minguo year followed by a two-digit month and a two-digit day, separated by hyphens. For example, 113-07-25 identifies year 113 of the Republic of China calendar, month 07, and day 25. The year does not need leading zeroes, but the month and day do because a fixed structure prevents ambiguous readings. This capability intentionally accepts a complete date rather than a bare year, a date written with slashes, or text containing a localized era label. That narrow contract makes automated imports predictable and makes malformed source data visible instead of guessing what the sender intended. Minguo year 1 corresponds to Gregorian 1912, so the accepted calendar begins with positive Minguo years. Before converting, the tool confirms that the month is from 01 through 12 and that the day exists in that month. A missing field, year zero, extra whitespace, or a differently arranged date is reported as invalid input for correction at the source.
Understand the conversion and validation
The conversion uses the civil-calendar relationship Gregorian year equals Minguo year plus 1911. Only the year changes; the numeric month and day remain the same. Thus Minguo 113-07-25 becomes Gregorian 2024-07-25. The calculation uses integer arithmetic and does not construct a JavaScript Date object. That detail matters because Date parsing can interpret text differently across environments or apply a local timezone near midnight. Here, the same input produces the same output in a browser, a server process, or an automated test. Calendar validation is applied to the resulting Gregorian year. Months with thirty days reject day 31, February rejects dates beyond its actual length, and February 29 is accepted only when the converted Gregorian year satisfies the divisible-by-4, century, and divisible-by-400 rules. The result contains normalized complete Minguo and Gregorian date strings as well as numeric year, month, and day fields, making it suitable for display or structured downstream processing without reparsing the output.
Use the result safely in records and workflows
This converter is useful when a Taiwanese document, government form, invoice, certificate, or database export stores a date with a Minguo year while another system expects a Gregorian date. Keep the original Minguo value beside the converted value when auditability matters; the paired response makes that easy and preserves a clear trail back to the source. For batch work, call the capability once per item and treat an invalid-input response as a data-quality issue that needs review rather than silently substituting a guessed date. The tool performs a calendar conversion only. It does not infer whether a two- or three-digit number came from the Minguo calendar, interpret Chinese era characters, translate lunar-calendar dates, or attach a time of day. It also does not shift the date for a timezone, because a civil calendar date has no clock offset by itself. Browser use is available for quick individual checks, while API execution costs $0.002 per request and provides the same deterministic calculation for integrations.
What you can do with it
Normalize Taiwanese records
Convert complete Minguo dates from administrative or business records before importing them into a system that stores Gregorian dates.
Check a form entry
Verify that a Minguo date is calendar-valid and see its Gregorian equivalent before submitting or transcribing a form.
Build an auditable migration
Store the returned Minguo and Gregorian values together so reviewers can trace every converted date back to its original representation.
FAQ
How is a Minguo year converted to a Gregorian year?
The converter adds 1911 to the positive Minguo year. The month and day are preserved after the complete date is validated.
What input format is accepted?
Use a positive Minguo year, a two-digit month, and a two-digit day separated by hyphens, for example 113-07-25.
Does it validate leap days?
Yes. February 29 is accepted only when the corresponding Gregorian year is a leap year under Gregorian calendar rules.
Does the conversion depend on my timezone?
No. It uses integer calendar arithmetic without a clock or Date object, so no timezone shift can change the result.
Can it convert dates before Minguo year 1?
No. This capability accepts positive Minguo years only and does not interpret pre-Republic era notation.
What does an API conversion cost?
Each API request costs $0.002. The browser version performs the same deterministic conversion locally.
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/date/minguo-to-gregorian \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"113-07-25"}'const res = await fetch("https://api.kit.forhosting.com/date/minguo-to-gregorian", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "113-07-25"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/minguo-to-gregorian",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "113-07-25"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/minguo-to-gregorian", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"113-07-25"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"113-07-25"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/minguo-to-gregorian", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"date": "113-07-25"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.minguo_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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |