Tính thời hạn, thời hiệu API
Tính thời hạn theo Điều 144–148 BLDS có tính ngày nghỉ lễ, kèm bảng thời hiệu (hợp đồng, thừa kế, lao động, khiếu nại, kháng cáo) có căn cứ.
Gửi ngày xảy ra sự kiện start và period (15d, 2w, 3m, 1y, 1y6m, 10wd – ngày làm việc, hoặc "30 ngày", "3 tháng") hoặc mã rule trong bảng có sẵn, API trả về ngày cuối cùng của thời hạn theo BLDS 2015: không tính ngày xảy ra sự kiện (Điều 147), thời hạn theo tháng, năm kết thúc vào ngày tương ứng (tháng không có ngày tương ứng thì lấy ngày cuối tháng), ngày cuối là ngày nghỉ cuối tuần, ngày lễ thì kết thúc vào ngày làm việc tiếp theo (Điều 148 khoản 5) theo lịch nghỉ chính thức. mode=fixed tính một tháng là 30 ngày, một năm là 365 ngày (Điều 146), suspended_days cộng thời gian không tính vào thời hiệu (Điều 156).
Không gửi start thì API trả bảng: thời hiệu khởi kiện hợp đồng, bồi thường ngoài hợp đồng (3 năm), thừa kế (30 / 10 / 3 năm), giao dịch vô hiệu, tranh chấp thương mại (2 năm), tranh chấp lao động (6 / 9 / 12 tháng), khiếu nại hành chính (90 ngày), khởi kiện vụ án hành chính (1 năm), kháng cáo (15 ngày, 7 ngày), kháng nghị giám đốc thẩm (3 năm), yêu cầu thi hành án (5 năm)… kèm điều luật. Lọc bằng category hoặc q. format=ics trả file lịch có nhắc hạn.
Kết quả giải thích từng bước và dẫn điều luật. Chỉ để tham khảo: hãy kiểm tra cách tính của luật chuyên ngành.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
start | query | string | không | Ngày xảy ra sự kiện (YYYY-MM-DD hoặc DD/MM/YYYY). Không gửi thì trả bảng thời hiệu. | |
period | query | string | không | Độ dài: 15d, 2w, 3m, 1y, 1y6m, 10wd (ngày làm việc), "30 ngày", "3 tháng", "nửa tháng". | |
rule | query | string | không | Mã quy định trong bảng (vd civil_appeal_judgment, contract_dispute, inheritance_real_estate). | |
mode | query | string | không | calendar | calendar (Điều 147–148) hoặc fixed (Điều 146: tháng = 30 ngày, năm = 365 ngày). |
suspended_days | query | number | không | Số ngày không tính vào thời hiệu (Điều 156). | |
saturday_off | query | boolean | không | true | Coi thứ Bảy là ngày nghỉ. |
category | query | string | không | Lọc bảng: civil, inheritance, commercial, labour, administrative, procedure. | |
format | query | string | không | json (mặc định) hoặc ics. |
Ví dụ
curl "https://apibox.io.vn/v1/vn-legal-deadline?start=2026-04-15&rule=civil_appeal_judgment" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/vn-legal-deadline?start=2026-04-15&rule=civil_appeal_judgment', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/vn-legal-deadline?start=2026-04-15&rule=civil_appeal_judgment",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-legal-deadline?start=2026-04-15&rule=civil_appeal_judgment');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"event_date": "2026-04-15",
"period": "15d",
"mode": "calendar",
"rule": {
"id": "civil_appeal_judgment",
"category": "procedure",
"vi": "Thời hạn kháng cáo bản án sơ thẩm (dân sự)",
"en": "Appeal against a first-instance civil judgment",
"period": "15d",
"starts_vi": "từ ngày tuyên án (vắng mặt: từ ngày nhận được bản án hoặc bản án được niêm yết)",
"starts_en": "from the pronouncement (absent party: from receipt or posting of the judgment)",
"ref": "Bộ luật Tố tụng dân sự 2015 Điều 273 khoản 1"
},
"start_date": "2026-04-16",
"raw_end_date": "2026-04-30",
"deadline": "2026-05-04",
"deadline_weekday": "Monday",
"deadline_weekday_vi": "Thứ Hai",
"moved_to_next_workday": true,
"moved_because": "Ngày Chiến thắng 30/4 và Quốc tế Lao động 1/5",
"days_from_event": 19,
"steps": [
{
"en": "The event day (2026-04-15) is not counted; the period starts on 2026-04-16 (art. 147(2))."
},
{
"en": "15 day(s) (art. 148(1)-(2)): last day 2026-04-30."
},
{
"en": "2026-04-30 is a day off (Ngày Chiến thắng 30/4 và Quốc tế Lao động 1/5): the period ends at the end of the next working day, 2026-05-04 (art. 148(5))."
},
{
"en": "The period ends at 24:00 on 2026-05-04 (art. 148(6))."
}
],
"legal": [
{
"ref": "Bộ luật Dân sự 2015, Điều 144–148 (cách tính thời hạn), Điều 149–157 (thời hiệu)",
"effective_from": "2017-01-01"
},
{
"ref": "Bộ luật Tố tụng dân sự 2015 Điều 273 khoản 1"
}
],
"notes": [
"Procedural laws sometimes count differently (e.g. \"ngày làm việc\"); courts generally apply BLDS arts. 144–148 to procedural deadlines (BLTTDS art. 182)."
],
"disclaimer": "Reference calculation, not legal advice; check the official text.",
"disclaimer_vi": "Kết quả tham khảo, không phải tư vấn pháp lý; hãy đối chiếu văn bản chính thức.",
"reviewed": "2026-11-11"
}
Ứng dụng
- Tính ngày cuối cùng được kháng cáo bản án sơ thẩm
- Theo dõi thời hiệu trong phần mềm quản lý vụ việc
- Đưa hạn chót kèm nhắc nhở vào lịch của luật sư (.ics)
- Kiểm tra yêu cầu đòi nợ theo hợp đồng còn thời hiệu không
Hỏi đáp
Ngày xảy ra sự kiện có được tính không?
Không. Theo Điều 147, ngày đầu tiên không được tính mà bắt đầu từ ngày tiếp theo. Thời hạn kháng cáo 15 ngày với bản án tuyên ngày 15/4 kết thúc ngày 30/4, và lùi sang ngày làm việc kế tiếp nếu đó là ngày nghỉ lễ.
Ngày cuối rơi vào ngày nghỉ thì sao?
Thời hạn kết thúc vào cuối ngày làm việc tiếp theo (Điều 148 khoản 5). Ngày nghỉ lấy theo lịch nghỉ chính thức của cán bộ, công chức.
Thời hiệu lấy từ luật nào?
Mỗi dòng ghi rõ căn cứ: BLDS, Bộ luật Lao động 2019, Luật Khiếu nại, BLTTDS / BLTTHS / Luật TTHC, Luật Thi hành án dân sự 2025.
API liên quan
Kiểm tra JSON
Kiểm tra cú pháp JSON, báo đúng dòng và cột bị lỗi, và validate dữ liệu theo JSON Schema (draft 4, 7, 2019-09 hoặc 2020-12).
{ }Định dạng JSON
Làm đẹp JSON với thụt lề 0-8 dấu cách hoặc tab, rút gọn (minify) hoặc sắp xếp key theo bảng chữ cái. Báo lỗi cú pháp kèm dòng và cột.
CSVCSV sang JSON
Chuyển CSV thành mảng object JSON theo dòng tiêu đề, tự nhận dấu phân cách, tự chuyển số và boolean, báo lỗi từng dòng.