Calendar / Specifications / QP-CAL-001
BÀI BÁO HỆ THỐNG · QP-CAL-001 · PHIÊN BẢN 1.0.0

Kiến trúc hệ thống tính toán lịch pháp âm dương và mô hình quy chiếu thiên văn Quizzman

Architecture and Astronomical Reference Model of the Quizzman Lunisolar Calendar System
Quizzman Research & Engineering Team (Quizzman Research Lab) · 1 tháng 10, 2026 · Phiên bản 1.0.0 · ● Ổn định (Stable)
Ngôn ngữ: Tiếng Việt · English · 繁體中文

Tóm tắt (Abstract)

Background / Context: Lịch âm dương phương Đông (Lunisolar Calendar) và các hệ thống tri thức lịch pháp dân sự, thuật số cổ truyền đặt ra yêu cầu tính toán kết hợp giữa cơ học thiên văn hiện đại và các quy ước văn hóa, lịch sử phức tạp. Trong các hệ thống tính toán phân tán, sự thiếu đồng nhất giữa ranh giới ngày dân sự địa phương, phép chiếu thời gian động học và các mô hình hành tinh thường dẫn đến những sai số nghiêm trọng như lệch ngày sóc, sai lệch tiết khí và tính sai Can Chi.
Methodology: Công trình này giới thiệu toàn diện kiến trúc hệ thống tính toán lịch pháp @quizzman/qm-calendar phiên bản 1.2.0. Hệ thống tích hợp chuỗi tính toán thiên văn chính xác cao: quy đổi Julian Date liên tục theo chuẩn quốc tế, xấp xỉ kinh độ hoàng đạo Mặt Trời qua lý thuyết hành tinh VSOP87 (129 số hạng theo Jean Meeus), giải nghiệm điểm Sóc thiên văn theo Meeus (Chương 49), mô hình nội suy liên tục 5 năm cho hiệu số ΔT\Delta T, và giải thuật xác định 24 Tiết Khí dựa trên thời điểm chuyển tiếp UTC thực tế. Đồng thời, hệ thống chuẩn hóa giải thuật Giờ Thái Dương Thực (True Solar Time) với phương trình thời gian (Equation of Time), phân định ranh giới Dạ Tý / Chính Tý, chu kỳ 60 Hoa Giáp, Thập Nhị Trực theo chi tháng tiết khí, Nhị Thập Bát Tú neo theo mốc JDN cố định, và bảng tra cứu 8 giai đoạn múi giờ lịch sử Việt Nam.
Results: Báo cáo kiểm định và hồ sơ audit thuật toán đã xác định và khắc phục triệt để 9 khiếm khuyết cơ bản (A01 đến A09). Hệ thống đã vượt qua 100% (139/139) ca kiểm chuẩn biên và hồi quy trong bộ benchmark độc lập, 834 phép kiểm tra ranh giới, cùng 146 462 ngày kiểm thử đối ứng hai chiều liên tục từ năm 1800 đến 2200 với 0 lỗi sai biệt. Kết quả so chuẩn phân chí năm 2024 với dữ liệu của Đài quan sát Hải quân Hoa Kỳ (USNO) đạt sai số kinh độ ∣Δλ⊙∣<0.0005∘|\Delta\lambda_\odot| < 0.0005^\circ, và thời điểm Sóc khớp với NASA trong giới hạn 0.1 phút.
Conclusion: Hệ thống @quizzman/qm-calendar thiết lập một khung quy chuẩn toán học khả kiểm, có tính tái lập cao và đóng vai trò nguồn chân lý thực thi (executable source of truth) chuẩn mực cho nghiên cứu lịch pháp và các dịch vụ tính toán liên quan.


1 Phạm vi áp dụng (Scope)

Tài liệu này công bố đặc tả kiến trúc, mô hình toán học và các quy tắc chuẩn hóa của hệ thống tính toán lịch pháp âm dương Quizzman (@quizzman/qm-calendar), bao gồm:

  1. Quy chuẩn biểu diễn thang đo thời gian và chuyển đổi liên tục sang Julian Day Number (JDN) và Julian Date (JD).
  2. Chuỗi tính toán cơ học thiên văn: lý thuyết chuyển động hành tinh VSOP87, thời điểm Sóc thiên văn, phương trình thời gian (Equation of Time), và mô hình thời gian động học (ΔT\Delta T).
  3. Thuật toán phân định tháng âm lịch, tháng nhuận (vô trung khí), và phân tích nguyên nhân phân kỳ mồng 1 Tết giữa múi giờ Việt Nam (UTC+07:00) và Trung Quốc (UTC+08:00).
  4. Mô hình số hóa các chu kỳ lịch pháp truyền thống: Lục Thập Hoa Giáp (Can Chi năm, tháng, ngày, giờ), quy ước Dạ Tý và Chính Tý, Thập Nhị Trực, và Nhị Thập Bát Tú.
  5. Mô hình quy chiếu Giờ Thái Dương Thực (True Solar Time) và hiệu ứng chuyển giao ngày hiệu lực (effectiveJdn) trong việc lập lá số Bát Tự.
  6. Mô hình phân vùng và chuyển dịch 8 giai đoạn múi giờ lịch sử Việt Nam từ trước năm 1906 đến sau năm 1975.
  7. Hồ sơ kiểm định thuật toán, phân tích nguyên nhân và giải pháp khắc phục 9 lỗi ranh giới hệ thống (A01 đến A09).

Phạm vi áp dụng bao gồm toàn bộ các dịch vụ tra cứu lịch, công cụ thiên văn, và hệ thống xử lý dữ liệu niên đại của hệ sinh thái Quizzman.

2 Tài liệu viện dẫn (Normative references)

Các tài liệu viện dẫn sau đây là cơ sở bắt buộc áp dụng trong toàn bộ hệ thống:

  • ISO 8601-1:2019 [1], Date and time — Representations for information interchange — Part 1: Basic rules.
  • ISO 2145:1978 [2], Documentation — Numbering of divisions and subdivisions in written documents.
  • ISO 690:2021 [3], Information and documentation — Guidelines for bibliographic references and citations to information resources.
  • Jean Meeus (1998) [4], Astronomical Algorithms, 2nd Edition, Willmann-Bell, Richmond, Virginia.
  • P. Bretagnon, G. Francou (1988) [5], Planetary theories in rectangular and spherical variables. VSOP87 solutions, Astronomy and Astrophysics, Vol. 202, pp. 309–315.
  • E. M. Standish (1998) [6], JPL Planetary and Lunar Ephemerides, DE405/LE405, JPL Interoffice Memorandum 312.F.
  • R. S. Park et al. (2021) [7], The JPL Planetary and Lunar Ephemerides DE440 and DE441, The Astronomical Journal, Vol. 161, No. 3.
  • J. Chapront, G. Francou (2003) [8], The lunar theory ELP/MPP02, Astronomy and Astrophysics, Vol. 404, pp. 735–742.
  • F. Espenak, J. Meeus (2006) [9], Five Millennium Catalog of Solar Eclipses: -1999 to +3000, NASA TP-2006-214141.
  • Hồ Ngọc Đức (2000) [10], Lunisolar Calendar Calculations and Vietnamese Standard Meridian, Leipzig University.
  • IANA Time Zone Database (2026a) [11], Time Zone Database, Internet Assigned Numbers Authority.
  • USNO & HMNAO (2023) [12], The Astronomical Almanac for the Year 2024, Washington: US Government Publishing Office.
  • Hong Kong Observatory (2024) [13], Gregorian-Lunar Calendar Conversion Tables of the Hong Kong Observatory (1901–2100).
  • Doãn Lộc, Mai Giác Thành (1741) [14], Khâm Định Hiệp Kỷ Biện Phương Thư (欽定協紀辨方書), Tứ Khố Toàn Thư đệ 807 sách.
  • Quách Thủ Kính, Vương Tuần (1281) [15], Thọ Thời Lịch (授時曆), Nguyên Sử Quyển 52–55.
  • Lê Quý Đôn (1777) [16], Vân Đài Loại Ngữ (芸臺類語), Quyển 1: Ngôn tạo khảo.
  • Quizzman Technical Reference (2026) [17], Quizzman Lunisolar Calendar Engine Technical Reference and Architecture v2.1.
  • Quizzman Quality Group (2026) [18], Quizzman Calendar Engine Algorithm Audit and Fix Verification Report, Technical Dossier AUD-2026-CAL-02.

3 Thuật ngữ và định nghĩa (Terms and definitions)

Trong tài liệu này, các thuật ngữ sau đây được định nghĩa thống nhất:

3.1 Ngày dân sự (Civil day)

Khoảng thời gian liên tục kéo dài 86 400 giây theo thang đo thời gian địa phương, tính từ 00:00:00 đến 24:00:00.

3.2 Sóc thiên văn (Astronomical new moon)

Thời điểm thiên văn khi tâm của Mặt Trăng và tâm của Mặt Trời có cùng kinh độ hoàng đạo biểu kiến nhìn từ tâm Trái Đất (kinh độ tương đối bằng 0∘0^\circ), trong thuật ngữ lịch pháp Đông Á gọi là thời điểm Sóc.

3.3 Trung khí (Major solar term)

Tiết khí trung tâm (Trung khí), tương ứng với các thời điểm kinh độ hoàng đạo của Mặt Trời đạt các bội số nguyên của 30∘30^\circ (λ⊙=0∘,30∘,60∘,…,330∘\lambda_\odot = 0^\circ, 30^\circ, 60^\circ, \dots, 330^\circ).

3.4 Tiết khí (Minor solar term)

Tiết khí phụ (Tiết khí thông thường), tương ứng với các thời điểm kinh độ hoàng đạo của Mặt Trời đạt các góc lẻ của 15∘15^\circ (λ⊙=15∘,45∘,75∘,…,345∘\lambda_\odot = 15^\circ, 45^\circ, 75^\circ, \dots, 345^\circ).

3.5 Giờ Thái Dương Thực (True solar time)

Thời gian đo trực tiếp theo góc giờ của tâm Mặt Trời thực tế tại kinh độ địa phương, bằng thời gian mặt trời trung bình địa phương cộng với phương trình thời gian (Equation of Time).

3.6 Dạ Tý và Chính Tý (Early rat and late rat)

Quy ước xử lý giờ Tý (23:00 đến 01:00). Giờ Dạ Tý (Early Rat, 23:00–23:59) giữ nguyên ngày hiện tại; giờ Chính Tý (Late Rat, 00:00–00:59) chuyển sang ngày kế tiếp.

4 Ký hiệu và thuật ngữ viết tắt (Symbols and abbreviated terms)

  • Y,M,DY, M, D: Năm, tháng, ngày theo lịch Gregory dân sự.
  • JDN\text{JDN}: Julian Day Number, số nguyên đếm ngày liên tục bắt đầu từ buổi trưa Greenwich ngày 01/01/-4712 (theo lịch Julius thiên văn).
  • JD\text{JD}: Julian Date liên tục dưới dạng số thực biểu diễn cả phân số ngày.
  • UT\text{UT} / UTC\text{UTC}: Universal Time / Coordinated Universal Time (Thời gian Phối hợp Quốc tế).
  • TT\text{TT}: Terrestrial Time (Thời gian Nhiệt động lực học Trái Đất), thỏa mãn TT=UT+ΔT\text{TT} = \text{UT} + \Delta T.
  • ΔT\Delta T: Hiệu số hiệu chỉnh chuyển động tự quay bất thường của Trái Đất giữa TT và UT1.
  • τ\tau: Thời gian đo bằng thiên niên kỷ Julian (10 00010,000 năm Julian) tính từ kỷ nguyên J2000.0.
  • TT: Thời gian đo bằng thế kỷ Julian (36 52536,525 ngày) tính từ kỷ nguyên J2000.0.
  • λ⊙\lambda_\odot: Kinh độ hoàng đạo biểu kiến của Mặt Trời.
  • EoT\text{EoT}: Equation of Time (Phương trình thời gian), chênh lệch giữa giờ mặt trời thực và giờ mặt trời trung bình.
  • LMT\text{LMT}: Local Mean Time (Thời gian Mặt Trời Trung bình Địa phương).
  • TST\text{TST}: True Solar Time (Giờ Thái Dương Thực).

5 Quy ước và giả định nền tảng (Conventions and assumptions)

  1. Trục thời gian nội bộ: Toàn bộ các mốc thời gian giao dịch và lưu trữ ở tầng lõi Quizzman SHALL được biểu diễn bằng UTC.
  2. Kinh tuyến quy chuẩn Việt Nam: Lịch âm dương dân tộc Việt Nam quy chuẩn theo kinh tuyến 105∘105^\circ Đông, tương ứng với múi giờ cố định UTC+07:00 (trừ các thời kỳ lịch sử đặc thù được quy định tại Section 10).
  3. Mốc Kỷ nguyên J2000.0: Thời điểm 12:00:00 TT ngày 01/01/2000 ứng với giá trị chuẩn JDN=2451545\text{JDN} = 2451545 và JD=2451545.0\text{JD} = 2451545.0.
  4. Quy ước chuyển đổi liên tục: Thời điểm nửa đêm 00:00:00 UTC của ngày có chỉ số JDN\text{JDN} mang giá trị JD=JDN−0.5\text{JD} = \text{JDN} - 0.5.

6 Khung kiến trúc hệ thống tính toán lịch pháp (Architectural framework)

Hệ thống tính toán lịch pháp @quizzman/qm-calendar được tổ chức theo kiến trúc phân tầng 4 lớp độc lập:

┌────────────────────────────────────────────────────────────────────────┐
│                        API & Application Layer                         │
│   solarToLunar, lunarToSolar, getHourCanChi, getDayCanChi, Almanac     │
├────────────────────────────────────────────────────────────────────────┤
│                       Calendar & Domain Layer                          │
│   Sóc (New Moon), Tiết Khí (Solar Terms), Nhuận, Can Chi, Trực, Tú     │
├────────────────────────────────────────────────────────────────────────┤
│                       Astronomy & Ephemeris Layer                      │
│   VSOP87 Sun Longitude, Meeus Ch.49 New Moon, Delta T Blend, EoT       │
├────────────────────────────────────────────────────────────────────────┤
│                       Time Base & Coordinate Layer                     │
│   Continuous Julian Date, Timezone Reductions, Geodetic Coordinates    │
└────────────────────────────────────────────────────────────────────────┘

Luồng tính toán chính xử lý từ một ngày dân sự đầu vào:

  1. Tiếp nhận (Y,M,D)(Y, M, D) và giờ địa phương, xác định độ lệch múi giờ pháp định theo vị trí và niên đại.
  2. Quy đổi sang JDN\text{JDN} số nguyên và JD\text{JD} liên tục trên thang UTC.
  3. Chuyển đổi sang thang thời gian Terrestrial Time (TT=UT+ΔT\text{TT} = \text{UT} + \Delta T).
  4. Tính tọa độ Mặt Trời qua lý thuyết VSOP87 và giải nghiệm các thời điểm Sóc qua chuỗi Meeus Chương 49.
  5. Xác định ranh giới tháng âm lịch dựa trên thời điểm Sóc nằm trong khoảng ngày dân sự địa phương [00:00:00,24:00:00)[00:00:00, 24:00:00).
  6. Quét 24 tiết khí trong năm thiên văn (Đông chí đến Đông chí kế tiếp) để xác định tháng nhuận (tháng không chứa Trung khí đầu tiên).
  7. Xuất kết quả tổ hợp: ngày, tháng, năm âm lịch, can chi các trụ, nạp âm, trực, tú và trạng thái cát hung.

7 Nền tảng thiên văn học và quy chuẩn tọa độ (Astronomical foundation)

7.1 Chuyển đổi liên tục sang Julian Date (Continuous Julian Date conversion)

Hệ thống chuyển đổi từ ngày dân sự lịch Gregory sang Julian Day Number theo công thức thiên văn chuẩn:

JDN=367Y−⌊7(Y+⌊(M+9)/12⌋)4⌋+⌊275M9⌋+D+1 721 013.5\text{JDN} = 367Y - \left\lfloor \frac{7(Y + \lfloor (M+9)/12 \rfloor)}{4} \right\rfloor + \left\lfloor \frac{275M}{9} \right\rfloor + D + 1,721,013.5

Do JDN\text{JDN} là số nguyên neo tại buổi trưa (12:00:00 UTC), phép chuyển đổi thời gian tức thời liên tục sang JD\text{JD} bắt buộc phải áp dụng độ dời nửa ngày:

JD=JDN+hour+minute60+second360024−0.5\text{JD} = \text{JDN} + \frac{\text{hour} + \frac{\text{minute}}{60} + \frac{\text{second}}{3600}}{24} - 0.5

Tại 00:00:00 UTC, JD=JDN−0.5\text{JD} = \text{JDN} - 0.5; tại 12:00:00 UTC, JD=JDN\text{JD} = \text{JDN}. Đây là điều kiện tiên quyết giải quyết dứt điểm sai lệch trong các phép kiểm chuẩn thiên văn (xem Section 11.4).

7.2 Quy giảm chuyển động hành tinh theo lý thuyết VSOP87 (Planetary reduction via VSOP87)

Engine sử dụng lý thuyết hành tinh VSOP87 (bản rút gọn 129 số hạng của Meeus) để xác định kinh độ hoàng đạo nhật tâm của Trái Đất, từ đó suy ra tọa độ địa tâm của Mặt Trời. Biến thời gian τ\tau biểu thị thiên niên kỷ Julian kể từ J2000.0:

τ=JD−2451545.0365250\tau = \frac{\text{JD} - 2451545.0}{365250}

Kinh độ hoàng đạo LL (radians) được biểu diễn bằng chuỗi lũy thừa:

L=L0+L1τ+L2τ2+L3τ3+L4τ4+L5τ5108L = \frac{L_0 + L_1\tau + L_2\tau^2 + L_3\tau^3 + L_4\tau^4 + L_5\tau^5}{10^8}

Trong đó mỗi thành phần LkL_k là tổng điều hòa của các số hạng lượng giác:

Lk=∑i=1NkAicos⁡(Bi+Ciτ)L_k = \sum_{i=1}^{N_k} A_i \cos(B_i + C_i \tau)

Số lượng phần tử trong các lớp được phân bổ tối ưu theo độ lớn đóng góp:

  • L0L_0: 64 số hạng (chuyển động quỹ đạo elip cơ sở của hệ Trái Đất – Mặt Trời).
  • L1L_1: 34 số hạng (nhiễu loạn chu kỳ năm).
  • L2L_2: 20 số hạng (biến thiên thế kỷ).
  • L3L_3: 7 số hạng (vi hiệu chỉnh thiên niên kỷ).
  • L4L_4: 3 số hạng (hiệu chỉnh chu kỳ dài).
  • L5L_5: 1 số hạng (hệ số tuyến tính bậc cao).

Kinh độ biểu kiến của Mặt Trời λ⊙\lambda_\odot được thiết lập sau khi cộng 180∘180^\circ và áp dụng các hiệu chỉnh quang sai và chương trình nutation:

λ⊙=Lheliocentric+180∘−0.00569∘−0.00478∘sin⁡(Ω)\lambda_\odot = L_{\text{heliocentric}} + 180^\circ - 0.00569^\circ - 0.00478^\circ \sin(\Omega)

Trong đó Ω=125.04∘−1934.136∘T\Omega = 125.04^\circ - 1934.136^\circ T là kinh độ nút thăng của quỹ đạo Mặt Trăng.

7.3 Quy giảm thời gian động học và mô hình nội suy liên tục Delta T (Delta T blending)

Để chuyển đổi giữa thang thời gian đo đạc UT và thang thời gian động học TT, hệ thống áp dụng bảng dữ liệu thực nghiệm cho giai đoạn 1620–2025. Nhằm khắc phục hiện tượng bước nhảy gián đoạn 4.467 s4.467\text{ s} giữa điểm cuối của bảng tra cứu (70.000 s70.000\text{ s} tại năm 2025.0) và đa thức xấp xỉ tương lai (74.467 s74.467\text{ s} tại năm 2025.000001), Quizzman thiết lập mô hình hòa trộn tuyến tính (5-year continuous blend) trên đoạn [2025,2030][2025, 2030]:

w=y−20255,y∈[2025,2030]w = \frac{y - 2025}{5}, \quad y \in [2025, 2030]

ΔT(y)=(1−w)×70.0+w×P(y)\Delta T(y) = (1 - w) \times 70.0 + w \times P(y)

Trong đó P(y)P(y) là đa thức Stephenson–Morrison. Mô hình này đảm bảo tính khả vi từng đoạn và liên tục tuyệt đối của trục thời gian, loại bỏ hoàn toàn hiện tượng lệch bước nhảy ở các sự kiện thiên văn sát biên năm 2025.

7.4 Xác định thời điểm Sóc thiên văn (Astronomical New Moon determination)

Thời điểm Sóc được tính toán dựa trên thuật toán Jean Meeus (Chương 49). Chỉ số tháng synodic kk tính từ mốc 1900.0:

k=⌊(Y−1900)×12.3685⌋k = \lfloor (Y - 1900) \times 12.3685 \rfloor

Thời điểm Sóc trung bình:

JDmean=2415020.75933+29.53058868k+0.0001178T2−0.000000155T3+0.00033sin⁡(166.56∘+132.87∘T−0.009173∘T2)\text{JD}_{\text{mean}} = 2415020.75933 + 29.53058868k + 0.0001178T^2 - 0.000000155T^3 + 0.00033 \sin(166.56^\circ + 132.87^\circ T - 0.009173^\circ T^2)

Sau đó, 14 số hạng hiệu chỉnh chu kỳ tuần hoàn chính C1C_1 (bao gồm góc dị thường của Mặt Trời MM, góc dị thường Mặt Trăng M′M', và thông số vĩ độ FF) được tổng hợp để đạt thời điểm Sóc thực tế:

JDsoc=JDmean+C1−ΔT86400\text{JD}{\text{soc}} = \text{JD}{\text{mean}} + C_1 - \frac{\Delta T}{86400}

8 Thuật toán tính toán lịch pháp âm dương (Lunisolar calendar calculation algorithms)

8.1 Phân bổ tháng âm lịch và quy chiếu ngày dân sự (Civil folding)

Một ngày dân sự tại vùng có độ lệch múi giờ ZZ bắt đầu tại thời điểm chuyển giao nửa đêm cục bộ. Để xác định ngày mồng 1 của một tháng âm lịch, hệ thống tìm thời điểm Sóc JDsoc\text{JD}_{\text{soc}} và tính ngày dân sự địa phương tương ứng:

Dsoc=⌊JDsoc+0.5+Z24⌋D_{\text{soc}} = \left\lfloor \text{JD}_{\text{soc}} + 0.5 + \frac{Z}{24} \right\rfloor

Mọi ngày dân sự DD nằm trong khoảng [Dsoc,i,Dsoc,i+1)[D_{\text{soc}, i}, D_{\text{soc}, i+1}) thuộc về tháng âm lịch ii, với ngày âm lịch thứ d=D−Dsoc,i+1d = D - D_{\text{soc}, i} + 1.

8.2 Cơ chế phân kỳ mồng 1 Tết giữa lịch Việt Nam và Trung Quốc (Divergence mechanism)

Việt Nam áp dụng múi giờ UTC+07:00 (Z=7Z=7), trong khi Trung Quốc áp dụng UTC+08:00 (Z=8Z=8). Khi một điểm Sóc xảy ra trong khoảng thời gian [16:00,17:00)[16:00, 17:00) UTC:

  • Tại Việt Nam: Giờ địa phương là 23:xx23:\text{xx} của ngày DD. Ngày Sóc được ghi nhận là ngày DD.
  • Tại Trung Quốc: Giờ địa phương là 00:xx00:\text{xx} của ngày D+1D+1. Ngày Sóc được ghi nhận là ngày D+1D+1.

Hệ quả là ngày mồng 1 Tết hoặc ngày bắt đầu tháng âm lịch tại Việt Nam sớm hơn Trung Quốc một ngày dân sự. Các hiện tượng phân kỳ lịch sử điển hình bao gồm:

  • Tết Mậu Thân 1968: Sóc xảy ra lúc 16:29 UTC ngày 29/01/1968 →\rightarrow Việt Nam đón Tết ngày 29/01 (1/1 Mậu Thân), Trung Quốc đón Tết ngày 30/01 (30/12 Đinh Mùi).
  • Phân kỳ năm 1984–1985: Điểm Sóc tháng 11/1984 rơi sát ranh giới múi giờ làm Việt Nam xếp tháng 11 bình thường vào 23/11/1984, trong khi Trung Quốc xếp tháng 10 nhuận. Hiệu ứng lệch một tháng này kéo dài sang tận đầu năm 1985.

8.3 Quy tắc xác định tháng nhuận (Leap month determination rule)

Hệ thống tuân thủ nghiêm ngặt quy tắc thiên văn truyền thống đã được ghi nhận trong Thọ Thời Lịch [15]:

  1. Năm âm lịch có 13 tháng giữa hai điểm Đông chí liên tiếp là năm nhuận.
  2. Tháng âm lịch đầu tiên sau Đông chí không chứa bất kỳ Trung khí (Major Solar Term) nào SHALL được xác định là tháng nhuận.

Do vị trí Trung khí được tính chính xác bằng kinh độ Mặt Trời đạt bội số của 30∘30^\circ, độ chính xác của mô hình VSOP87 đóng vai trò quyết định trong việc phân định các trường hợp Trung khí xảy ra sát thời điểm chuyển giao tháng Sóc.

9 Mô hình toán học các chu kỳ lịch pháp truyền thống (Metaphysical models)

9.1 Hệ đồng dư chu kỳ 60 Hoa Giáp (Sexagenary cycle congruences)

Chu kỳ 60 Hoa Giáp là cấu trúc toán học đẳng cấu với vành Z10×Z12\mathbb{Z}{10} \times \mathbb{Z}{12}.

  1. Can Chi Ngày (Day Pillar): Với JDN\text{JDN} là chỉ số ngày Julius nguyên liên tục: Ican=(JDN+9)(mod10)I_{\text{can}} = (\text{JDN} + 9) \pmod{10} Ichi=(JDN+1)(mod12)I_{\text{chi}} = (\text{JDN} + 1) \pmod{12} Kiểm chứng mốc J2000.0: JDN=2451545→Ican=4\text{JDN} = 2451545 \rightarrow I_{\text{can}} = 4 (Mậu), Ichi=6I_{\text{chi}} = 6 (Ngọ) →\rightarrow ngày Mậu Ngọ chuẩn xác.

  2. Can Chi Giờ (Hour Pillar) & Dạ Tý / Chính Tý: Can của giờ Tý được suy xuất từ Can của ngày thông qua thuật toán "Ngũ Thử Độn": Irat_stem=(2×Ican+1)(mod10)I_{\text{rat_stem}} = (2 \times I_{\text{can}} + 1) \pmod{10}

    • Khi earlyRat = true (Dạ Tý, 23:00–23:59): Giờ Tý sử dụng Can của ngày hiện tại.
    • Khi earlyRat = false (Chính Tý, hoặc sau 00:00): Giờ Tý sử dụng Can của ngày tiếp theo.

9.2 Giờ Thái Dương Thực và hiệu ứng chuyển giao ngày hiệu lực (True Solar Time)

Giờ Thái Dương Thực (TST\text{TST}) hiệu chỉnh độ lệch kinh độ địa phương và độ lệch elip của quỹ đạo Trái Đất:

TST=Clock Time+(λlocal−λstd)×4 min/deg+EoT\text{TST} = \text{Clock Time} + (\lambda_{\text{local}} - \lambda_{\text{std}}) \times 4\text{ min/deg} + \text{EoT}

Trong đó kinh tuyến quy chuẩn của Việt Nam bắt buộc là λstd=105∘E\lambda_{\text{std}} = 105^\circ\text{E} (7×15∘7 \times 15^\circ). Việc sử dụng sai kinh tuyến chuẩn (ví dụ 110∘E110^\circ\text{E}) sẽ tạo ra sai số hệ thống 20 phuˊt20\text{ phút}, làm biến đổi hoàn toàn chi của giờ.

Khi hiệu chỉnh TST\text{TST} làm thời gian dịch chuyển qua ngưỡng nửa đêm (<00:00< 00:00 hoặc ≥24:00\ge 24:00), hệ thống thiết lập effectiveLocalDateTime và effectiveJdn. Toàn bộ các phép tính ngày âm, nhật trụ, giờ trụ, và tiết khí của lá số Bát Tự bắt buộc phải chuyển dịch đồng bộ theo effectiveJdn này.

9.3 Thập Nhị Trực (Twelve Day Officers)

Chuỗi 12 Trực (Kiến, Trừ, Mãn, Bình, Định, Chấp, Phá, Nguy, Thành, Thu, Khai, Bế) vận hành tuần hoàn theo chi của ngày đối chiếu với chi của tháng tiết khí [14]:

Iofficer=(Ichi−Iterm_branch+12)(mod12)I_{\text{officer}} = (I_{\text{chi}} - I_{\text{term_branch}} + 12) \pmod{12}

Quy tắc bắt buộc: Tháng tiết khí khởi từ Lập Xuân mang chi Dần (I=2I=2), Lập Thu mang chi Thân (I=8I=8). Tuyệt đối không sử dụng số tháng âm lịch hoặc tháng dương lịch làm tham số đầu vào.

9.4 Nhị Thập Bát Tú (Twenty-Eight Mansions)

Chu kỳ 28 sao của lịch dân sự là một chu kỳ tuần hoàn độc lập trên trục JDN\text{JDN}. Hệ thống chuẩn hóa mốc epoch tại ngày 01/01/1995 (Chủ Nhật, sao Hư, I=10I=10), tương ứng JDN=2449719\text{JDN} = 2449719:

Imansion=(JDN−2449719+10)(mod28)I_{\text{mansion}} = (\text{JDN} - 2449719 + 10) \pmod{28}

Nếu kết quả âm, cộng thêm 28 để đảm bảo chỉ số trong khoảng [0,27][0, 27].

10 Mô hình múi giờ lịch sử Việt Nam và ranh giới dân sự (Historical timezone reduction)

Quizzman số hóa trọn vẹn 8 thời kỳ múi giờ pháp định của Việt Nam theo chuẩn dữ liệu IANA Time Zone Database (Asia/Ho_Chi_Minh) [11]:

Giai đoạn Khoảng thời gian áp dụng Múi giờ pháp định Bối cảnh lịch sử và cơ sở pháp lý
0 Trước 01/07/1906 LMT (λ/15∘\lambda / 15^\circ) Giờ Mặt Trời Trung Bình cục bộ (chưa chuẩn hóa).
1 01/07/1906 – 31/12/1942 UTC+07:00 Nghị định Toàn quyền Đông Dương áp dụng múi giờ 105°E.
2 01/01/1943 – 14/03/1945 UTC+08:00 Chính quyền Vichy điều chỉnh phục vụ chiến tranh.
3 15/03/1945 – 01/09/1945 UTC+09:00 Quân đội Nhật Bản áp dụng giờ Tokyo tại Đông Dương.
4 02/09/1945 – 31/03/1947 UTC+07:00 Việt Nam Dân chủ Cộng hòa tái lập giờ độc lập.
5 01/04/1947 – 09/10/1954 UTC+08:00 Khu vực Pháp kiểm soát đổi sang múi giờ 8.
6 10/10/1954 – 12/06/1975 Phân chia Bắc–Nam Miền Bắc: UTC+08:00 practical (1954–67), UTC+07:00 (1968+). Miền Nam: UTC+07:00 (1955–59), UTC+08:00 (1960–75).
7 Từ 13/06/1975 trở đi UTC+07:00 Chính phủ Cách mạng Lâm thời ban hành chuẩn thống nhất.

Hệ quả nghiên cứu lịch sử: Trong giai đoạn 1960–1975, miền Nam áp dụng UTC+08:00 trong khi miền Bắc từ năm 1968 dùng UTC+07:00. Toàn bộ 270 ngày có sự phân kỳ âm lịch giữa hai miền đã được engine quét và xác thực đầy đủ. Điển hình là Tết Ất Tỵ 1965: ngày 01/02/1965 tại miền Bắc là mồng 1 Tết, trong khi tại miền Nam là 30 tháng Chạp năm Giáp Thìn.

11 Hồ sơ audit thuật toán và giải pháp khắc phục (Audit findings and formal resolution)

Hồ sơ kiểm định thuật toán năm 2026 [18] đã phát hiện và xử lý dứt điểm 9 khiếm khuyết cấu trúc hệ thống:

11.1 A01: Ranh giới ngày dân sự của 24 Tiết Khí

  • Khiếm khuyết: Hàm tính tiết khí cũ so sánh kinh độ tại buổi trưa hôm nay với buổi trưa hôm qua, tạo ra cửa sổ đo từ trưa đến trưa (noon-to-noon). Hệ quả là các tiết khí diễn ra vào buổi chiều (sau 12:00 địa phương) bị đẩy sang ngày hôm sau (12/24 tiết khí năm 2024 bị lệch 1 ngày).
  • Khắc phục: Thiết lập bộ giải nghiệm getSolarTermTransitionsForYear tìm thời điểm chuyển tiếp chính xác dạng UTC instant, sau đó chiếu lên khoảng ngày dân sự địa phương [00:00:00,24:00:00)[00:00:00, 24:00:00).

11.2 A02: Bất đồng giữa Can Chi tháng tiết khí và Tiết Khí hiển thị

  • Khiếm khuyết: Tháng Can Chi tính dựa trên kinh độ lúc 12:00 UTC của ngày JDN, trong khi Tiết Khí hiển thị dùng quy tắc cũ.
  • Khắc phục: Thống nhất một nguồn chân lý chung getSolarTermTransitionsForYear cho Tiết Khí, Tháng Can Chi và Thập Nhị Trực.

11.3 A03: Lan truyền ngày hiệu lực Giờ Thái Dương Thực

  • Khiếm khuyết: Khi TST\text{TST} làm dịch ngày qua nửa đêm, hàm chỉ báo cờ mà không cập nhật jdn, dẫn đến trụ ngày và giờ của Bát Tự vẫn lấy theo ngày cũ.
  • Khắc phục: Lan truyền effectiveLocalDateTime và effectiveJdn xuyên suốt các module Bát Tự.

11.4 A04: Sai lệch điểm gốc Julian Date trong phép so chuẩn NASA

  • Khiếm khuyết: Phép thử nghiệm cũ cộng phân số giờ UTC vào jdFromDate(Y, M, D) vốn đã neo tại 12:00 mà không trừ 0.50.5 ngày, tạo ra sai lệch giả tạo xấp xỉ 0.5∘0.5^\circ.
  • Khắc phục: Áp dụng hàm quy chuẩn utcDateTimeToJulianDate(). Sai số kinh độ Mặt Trời thực tế so với USNO giảm xuống dưới 0.0005∘0.0005^\circ.

11.5 A05: Hợp đồng phân định chức năng chọn ngày tốt

  • Khiếm khuyết: Tài liệu thiết kế ghi nhận bộ chấm điểm đa nhân tố Thần Sát, nhưng API public thực tế dùng bộ giải quy tắc suy diễn nguyên nhân (purpose-rule resolver).
  • Khắc phục: Cập nhật hợp đồng kỹ thuật khẳng định API public là bộ giải quy tắc có truy vết, dữ liệu Thần Sát mang tính chất thông tin tham khảo.

11.6 A06: Bước nhảy gián đoạn Delta T tại mốc 2025

  • Khiếm khuyết: Bảng thực nghiệm kết thúc ở 2025 tại 70 s70\text{ s}, đa thức Stephenson–Morrison bắt đầu ở 74.467 s74.467\text{ s}, tạo ra bước nhảy 4.467 s4.467\text{ s}.
  • Khắc phục: Triển khai hàm hòa trộn tuyến tính 5 năm trên đoạn [2025,2030][2025, 2030].

11.7 A07: Kiểm tra biên độ dài tháng âm lịch

  • Khiếm khuyết: Chuyển đổi từ âm sang dương chấp nhận ngày 30 trong tháng thiếu 29 ngày, dẫn đến ngày dương lịch bị tràn sang tháng âm kế tiếp.
  • Khắc phục: Bổ sung điều kiện kiểm tra 1≤d≤(Dsoc,i+1−Dsoc,i)1 \le d \le (D_{\text{soc}, i+1} - D_{\text{soc}, i}).

11.8 A08: Chuẩn hóa kỳ vọng kiểm thử múi giờ miền Nam 1975

  • Khiếm khuyết: Bộ kiểm thử cũ kỳ vọng miền Nam chuyển sang UTC+07:00 từ 01/05/1975, mâu thuẫn với sắc lệnh ngày 13/06/1975 của Chính phủ Cách mạng Lâm thời và chuẩn IANA.
  • Khắc phục: Hiệu chỉnh oracle kiểm thử, xác nhận ranh giới chính xác là 00:00 ngày 13/06/1975.

11.9 A09: Ngăn ngừa ước tính sai chu kỳ Sóc dẫn đến ngày âm bằng 0

  • Khiếm khuyết: Công thức ước tính Sóc trung bình trong một số trường hợp biên chọn nhầm điểm Sóc tương lai, làm ngày âm trả về giá trị 0.
  • Khắc phục: Thuật toán luôn chọn điểm Sóc gần nhất không vượt quá ngày dân sự hiện tại.

12 Kiểm chứng thực nghiệm và kết quả benchmark (Empirical validation and benchmark results)

Hệ thống được kiểm định nghiêm ngặt qua 4 tầng kiểm thử:

12.1 Đối soát phân chí với dữ liệu USNO 2024 (USNO 2024 Cardinal Points Parity)

So sánh kinh độ hoàng đạo Mặt Trời tính bởi VSOP87 rút gọn của engine tại 4 thời khắc phân và chí năm 2024 theo công bố chính thức của USNO [12]:

| Hiện tượng | Thời điểm UTC | λ⊙\lambda_\odot Kỳ vọng | λ⊙\lambda_\odot Engine | Sai số tuyệt đối ∣Δλ⊙∣|\Delta\lambda_\odot| | |---|---|---|---|---| | Xuân Phân 2024 | 2024-03-20 03:06:00Z | 0.0∘0.0^\circ | 359.999602∘359.999602^\circ | 0.000398∘0.000398^\circ | | Hạ Chí 2024 | 2024-06-20 20:51:00Z | 90.0∘90.0^\circ | 90.000051∘90.000051^\circ | 0.000051∘0.000051^\circ | | Thu Phân 2024 | 2024-09-22 12:43:00Z | 180.0∘180.0^\circ | 179.999585∘179.999585^\circ | 0.000415∘0.000415^\circ | | Đông Chí 2024 | 2024-12-21 09:20:00Z | 270.0∘270.0^\circ | 269.999788∘269.999788^\circ | 0.000212∘0.000212^\circ |

Tất cả các điểm kiểm tra đều thỏa mãn ngưỡng khắt khe ∣Δλ⊙∣<0.0005∘|\Delta\lambda_\odot| < 0.0005^\circ (1.8′′1.8'').

12.2 Đối soát thời điểm Sóc với danh mục NASA (NASA New Moon Parity)

Tại thời điểm Sóc ngày 11/01/2024 (kỷ nguyên hiện đại), NASA ghi nhận thời điểm cực tiểu tại 11:57 UTC. Engine Quizzman tính toán ra 11:56:56 UTC, đạt độ lệch chỉ 0.07 phuˊt0.07\text{ phút} (nhỏ hơn rất nhiều so với ngưỡng cho phép 2.0 phuˊt2.0\text{ phút}).

12.3 Kiểm chuẩn ngày vàng: 01/09/2026 (Golden Date Verification)

Đối chiếu toàn diện ngày vàng kiểm chuẩn 01/09/2026 (Giờ Việt Nam UTC+07:00):

Tham số Trước khi vá lỗi Sau khi vá lỗi / Chuẩn độc lập Trạng thái
Dương lịch 01/09/2026 01/09/2026 Khớp
Âm lịch 20 tháng 7 năm Bính Ngọ 20 tháng 7 năm Bính Ngọ Khớp
Can Chi ngày Mậu Dần Mậu Dần Khớp
Nạp âm Thành Đầu Thổ Thành Đầu Thổ Khớp
Tiết khí Xử Thử Xử Thử Khớp
Tháng tiết khí Thân (sau Lập Thu) Thân (sau Lập Thu) Khớp
Thập Nhị Trực Nguy (Lệch +1) Phá Khớp chuẩn Hiệp Kỷ
Nhị Thập Bát Tú Bích (Lệch +1) Thất (Thất Hỏa Trư) Khớp chuẩn JDN
Hoàng / Hắc đạo Thiên Hình Hắc Đạo Thiên Hình Hắc Đạo Khớp

12.4 Kiểm thử đối ứng hai chiều liên tục 1800–2200 (Exhaustive Bi-directional Roundtrip)

Quy trình kiểm thử hồi quy toàn diện quét qua từng ngày liên tục từ ngày 01/01/1800 đến ngày 31/12/2200 (tổng cộng 146 462 ngày dân sự). Phép thử thực hiện chuyển đổi xuôi từ Dương sang Âm (solarToLunar), sau đó chuyển ngược từ Âm sang Dương (lunarToSolar). Kết quả ghi nhận:

  • Tổng số ngày đánh giá: 146 462 ngày.
  • Số ngày khớp hoàn toàn: 146 462 ngày (đạt tỉ lệ 100%100%).
  • Số lỗi sai lệch: 0.

12.5 Phân tích hiện tượng ảo giác mô hình AI (AI Hallucination in Benchmarks)

Trong quá trình xây dựng bộ kiểm chuẩn ban đầu, một mô hình ngôn ngữ lớn (Google Gemini) đã được sử dụng để sinh 12 trường hợp kiểm thử biên. Kết quả ban đầu ghi nhận 7/12 trường hợp thất bại. Qua điều tra toán học và đối chiếu sử liệu độc lập, toàn bộ 7 thất bại đều bắt nguồn từ việc mô hình AI sinh sai dữ liệu kỳ vọng:

  1. Gán sai ngày dương lịch của Tết Mậu Thân 1968 (sinh ngày 16/02 thay vì 29/01).
  2. Tự tạo phân kỳ âm lịch không tồn tại trong suốt năm 1972.
  3. Nhầm lẫn ngày Tết 1984 với thời điểm bắt đầu phân kỳ tháng 11/1984.
  4. Đưa ra phán đoán sai lệch về phân kỳ năm tranh cãi 2033.
  5. Sử dụng kinh tuyến giả định 110∘E110^\circ\text{E} thay vì kinh tuyến chuẩn 105∘E105^\circ\text{E} khi tính giờ TP.HCM.
  6. Tính sai Địa Chi ngày cho ngày 24/03/2026 (đoán Đinh Tỵ thay vì Đinh Dậu) và 25/03/2026 (đoán Mậu Ngọ thay vì Mậu Tuất).

Bài học cốt lõi: Tính toán lịch pháp và thiên văn đòi hỏi mô hình giải tích và số học xác định, không thể dựa vào suy diễn thống kê xác suất.

13 Giới hạn kỹ thuật (Limitations)

Hệ thống @quizzman/qm-calendar phiên bản hiện tại có các giới hạn kỹ thuật được xác định rõ:

  1. Phạm vi niên đại tối ưu: Mô hình VSOP87 rút gọn và bảng tra cứu ΔT\Delta T đạt độ chính xác tối ưu trong khoảng năm 1800 đến 2200. Ngoài phạm vi này, sai số tích lũy của ΔT\Delta T có thể ảnh hưởng đến các điểm Sóc xảy ra sát thời khắc nửa đêm.
  2. Mô hình Mặt Trăng giải tích: Thuật toán hiện tại sử dụng chuỗi Meeus Chương 49. Kế hoạch nâng cấp tiếp theo (xem kế hoạch Pha 0–7) sẽ tích hợp giải pháp giải tích ELP/MPP02 và hạt nhân số học vi phân JPL DE440 để đạt độ chính xác dưới giây trên toàn dải thiên niên kỷ.
  3. Quy ước lịch pháp miền Bắc trước năm 1967: Việc áp dụng múi giờ UTC+08:00 thực tế (practical calendar) theo bảng thiên văn Đài Tử Kim Sơn là một quy ước sản phẩm dựa trên tập quán in lịch thời kỳ đó, không phải là một xác nhận về múi giờ dân sự pháp định chính thức.

14 Kết luận (Conclusion)

Công trình này đã hệ thống hóa và xuất bản toàn diện đặc tả kỹ thuật của hệ thống tính toán lịch pháp @quizzman/qm-calendar theo chuẩn mực Quizzman Paper Standard (QPS-ISO 1.0). Thông qua việc giải quyết triệt để 9 lỗi ranh giới cốt lõi, chuẩn hóa quy đổi thời gian liên tục, và vượt qua toàn bộ 146 462 ngày kiểm thử đối ứng cùng các đối chuẩn khắt khe từ USNO và NASA, hệ thống khẳng định tính tin cậy toán học tuyệt đối và sẵn sàng phục vụ như một nguồn chân lý tiêu chuẩn cho các ứng dụng tính toán lịch pháp đương đại.

Tài liệu tham khảo (Bibliography)

[1] International Organization for Standardization. ISO 8601-1:2019 Date and time — Representations for information interchange — Part 1: Basic rules. Geneva: ISO, 2019.
[2] International Organization for Standardization. ISO 2145:1978 Documentation — Numbering of divisions and subdivisions in written documents. Geneva: ISO, 1978.
[3] International Organization for Standardization. ISO 690:2021 Information and documentation — Guidelines for bibliographic references and citations to information resources. Geneva: ISO, 2021.
[4] Jean Meeus. Astronomical Algorithms. 2nd edition. Richmond: Willmann-Bell, Inc., 1998.
[5] Pierre Bretagnon, Gérard Francou. Planetary theories in rectangular and spherical variables. VSOP87 solutions. Astronomy and Astrophysics, 1988, vol. 202, pp. 309–315.
[6] E. Myles Standish. JPL Planetary and Lunar Ephemerides, DE405/LE405. JPL Interoffice Memorandum 312.F, 1998.
[7] Ryan S. Park, William M. Folkner, James G. Williams, Dale H. Boggs. The JPL Planetary and Lunar Ephemerides DE440 and DE441. The Astronomical Journal, 2021, vol. 161, no. 3, p. 105.
[8] Jean Chapront, Gérard Francou. The lunar theory ELP/MPP02. Astronomy and Astrophysics, 2003, vol. 404, no. 2, pp. 735–742.
[9] Fred Espenak, Jean Meeus. Five Millennium Catalog of Solar Eclipses: -1999 to +3000. NASA Technical Publication TP-2006-214141, 2006.
[10] Hồ Ngọc Đức. Lunisolar Calendar Calculations and Vietnamese Standard Meridian. Leipzig University Technical Report, 2000.
[11] Internet Assigned Numbers Authority. Time Zone Database (tzdb), version 2026a, 2026.
[12] United States Naval Observatory, Her Majesty's Nautical Almanac Office. The Astronomical Almanac for the Year 2024. Washington: U.S. Government Publishing Office, 2023.
[13] Hong Kong Observatory. Gregorian-Lunar Calendar Conversion Tables of the Hong Kong Observatory (1901–2100). Hong Kong SAR Government, 2024.
[14] Doãn Lộc, Mai Giác Thành. Khâm Định Hiệp Kỷ Biện Phương Thư (欽定協紀辨方書). Bắc Kinh: Càn Long lục niên, 1741.
[15] Quách Thủ Kính, Vương Tuần. Thọ Thời Lịch (授時曆). Đại Đô: Nhà Nguyên, 1281.
[16] Lê Quý Đôn. Vân Đài Loại Ngữ (芸臺類語) — Quyển 1: Ngôn tạo khảo. Thăng Long, 1777.
[17] Quizzman Research & Engineering Team. Quizzman Lunisolar Calendar Engine Technical Reference and Architecture v2.1. Quizzman Engineering Reports, 2026.
[18] Quizzman Research & Quality Assurance Group. Quizzman Calendar Engine Algorithm Audit and Fix Verification Report. Technical Audit Dossier AUD-2026-CAL-02, 2026.

Phụ lục A (Quy chuẩn) Đặc tả thuật toán và các hàm cốt lõi (Annex A)

Phần này đặc tả cài đặt quy chuẩn của các hàm tính toán cốt lõi trong hệ thống @quizzman/qm-calendar:

A.1 Chuyển đổi thời gian liên tục sang Julian Date

export function utcDateTimeToJulianDate(
  year: number,
  month: number,
  day: number,
  hour: number = 0,
  minute: number = 0,
  second: number = 0
): number {
  const a = Math.floor((14 - month) / 12);
  const y = year + 4800 - a;
  const m = month + 12 * a - 3;
  const jdn =
    day +
    Math.floor((153 * m + 2) / 5) +
    365 * y +
    Math.floor(y / 4) -
    Math.floor(y / 100) +
    Math.floor(y / 400) -
    32045;
  const dayFraction = (hour + minute / 60 + second / 3600) / 24;
  return jdn + dayFraction - 0.5;
}

A.2 Giải thuật Thập Nhị Trực chuẩn hóa

export function getDayOfficer(
  dayBranchIndex: number,
  solarMonthBranchIndex: number
): { index: number; name: string } {
  const OFFICERS = [
    'Kiến', 'Trừ', 'Mãn', 'Bình', 'Định', 'Chấp',
    'Phá', 'Nguy', 'Thành', 'Thu', 'Khai', 'Bế'
  ];
  const index = (dayBranchIndex - solarMonthBranchIndex + 12) % 12;
  return {
    index,
    name: OFFICERS[index]
  };
}

A.3 Giải thuật Nhị Thập Bát Tú neo mốc JDN

export function getMansion(jdn: number): { index: number; name: string } {
  const MANSHIONS_EPOCH_JDN = 2449719; // 1995-01-01 (Chủ Nhật) = Sao Hư (index 10)
  const MANSION_NAMES = [
    'Giác', 'Cang', 'Đê', 'Phòng', 'Tâm', 'Vĩ', 'Cơ',
    'Đẩu', 'Ngưu', 'Nữ', 'Hư', 'Nguy', 'Thất', 'Bích',
    'Khuê', 'Lâu', 'Vị', 'Mão', 'Tất', 'Chủy', 'Sâm',
    'Tỉnh', 'Quỷ', 'Liễu', 'Tinh', 'Trương', 'Dực', 'Chẩn'
  ];
  let index = (jdn - MANSHIONS_EPOCH_JDN + 10) % 28;
  if (index < 0) index += 28;
  return {
    index,
    name: MANSION_NAMES[index]
  };
}

Phụ lục B (Tham khảo) Các nghị định múi giờ lịch sử Việt Nam (Annex B)

Bảng tổng hợp văn bản quy chuẩn phân định thời gian dân sự tại Việt Nam qua các thời kỳ:

  1. Nghị định ngày 18/05/1906 của Toàn quyền Đông Dương: Áp dụng giờ của kinh tuyến 105∘105^\circ Đông (UTC+07:00) cho toàn cõi Liên bang Đông Dương từ 00:00 ngày 01/07/1906.
  2. Nghị định ngày 23/12/1942: Điều chỉnh giờ Đông Dương tiến thêm 60 phút sang UTC+08:00, có hiệu lực từ 23:00 ngày 31/12/1942.
  3. Lệnh của Bộ Chỉ huy Quân sự Nhật Bản ngày 14/03/1945: Buộc toàn cõi Đông Dương sử dụng múi giờ Tokyo (UTC+09:00) từ ngày 15/03/1945.
  4. Sắc lệnh số 46-SL ngày 12/10/1945 của Chủ tịch Chính phủ Lâm thời Việt Nam Dân chủ Cộng hòa: Quy định giờ chính thức của nước Việt Nam độc lập là giờ thiên văn kinh tuyến 105∘105^\circ Đông (UTC+07:00).
  5. Nghị định số 362-CAB/MI ngày 04/09/1959 của Phủ Tổng thống Việt Nam Cộng hòa: Điều chỉnh múi giờ miền Nam từ UTC+07:00 sang UTC+08:00 kể từ 23:00 ngày 31/12/1959.
  6. Quyết định số 121-CP ngày 08/08/1967 của Hội đồng Chính phủ Việt Nam Dân chủ Cộng hòa: Ban hành cách tính lịch và áp dụng thống nhất múi giờ thứ 7 (UTC+07:00) kể từ ngày 01/01/1968.
  7. Thông cáo của Ủy ban Quân quản Thành phố Sài Gòn – Gia Định: Điều chỉnh giờ miền Nam lùi lại 60 phút từ UTC+08:00 về UTC+07:00 từ 00:00 ngày 13/06/1975, hoàn tất thống nhất thời gian dân sự trên phạm vi toàn quốc.

Tài liệu tham khảo (Hồ sơ ISO 690)

  1. [1] International Organization for Standardization. ISO 8601-1:2019 Date and time — Representations for information interchange — Part 1: Basic rules. ISO, 2019. [URL] (Governing international standard for date and time representation and midnight boundary definitions.)
  2. [2] International Organization for Standardization. ISO 2145:1978 Documentation — Numbering of divisions and subdivisions in written documents. ISO, 1978. [URL] (Governing standard for decimal hierarchy numbering without trailing periods.)
  3. [3] International Organization for Standardization. ISO 690:2021 Information and documentation — Guidelines for bibliographic references and citations to information resources. ISO, 2021. [URL] (Standard profile for bibliographic records and citation structures.)
  4. [4] Meeus, Jean. Astronomical Algorithms. Edition 2nd edition. Willmann-Bell, Inc., 1998. (Foundational reference for planetary position reductions, New Moon determination, and Equation of Time.)
  5. [5] Bretagnon, Pierre; Francou, Gérard. Planetary theories in rectangular and spherical variables. VSOP87 solutions. 1988. [URL] (Variations Séculaires des Orbites Planétaires (VSOP87) analytical theory of planetary motion.)
  6. [6] Standish, E. Myles. JPL Planetary and Lunar Ephemerides, DE405/LE405. Jet Propulsion Laboratory, 1998. [URL] (NASA JPL export ephemeris memorandum for high-precision celestial coordinates.)
  7. [7] Park, Ryan S.; Folkner, William M.; Williams, James G.; Boggs, Dale H.. The JPL Planetary and Lunar Ephemerides DE440 and DE441. 2021. DOI: 10.3847/1538-3881/abd414 (High-accuracy numerical integration ephemeris fitted to modern lunar laser ranging and spacecraft tracking.)
  8. [8] Chapront, Jean; Francou, Gérard. The lunar theory ELP/MPP02. 2003. DOI: 10.1051/0004-6361:20030508 (Analytical lunar ephemeris fitted to DE405 constants.)
  9. [9] Espenak, Fred; Meeus, Jean. Five Millennium Catalog of Solar Eclipses: -1999 to +3000. NASA Goddard Space Flight Center, 2006. [URL] (Empirical tables and polynomial approximations for Terrestrial Time Delta T reductions.)
  10. [10] Ho, Ngoc Duc. Lunisolar Calendar Calculations and Vietnamese Standard Meridian. Leipzig University, 2000. [URL] (Foundational astronomical formulation of Vietnamese lunisolar conversion based on the 105°E meridian.)
  11. [11] Internet Assigned Numbers Authority. Time Zone Database (tzdb). 2026. [URL] (Canonical historical and current civil time zone definitions, including Asia/Ho_Chi_Minh transitions.)
  12. [12] United States Naval Observatory and Her Majesty's Nautical Almanac Office. The Astronomical Almanac for the Year 2024. U.S. Government Publishing Office, 2023. [URL] (Ground-truth astronomical coordinates, solar solstice and equinox timings, and lunar phase instants.)
  13. [13] Hong Kong Observatory. Gregorian-Lunar Calendar Conversion Tables of the Hong Kong Observatory (1901–2100). Hong Kong Special Administrative Region Government, 2024. [URL] (Authoritative external East Asian lunisolar conversion benchmark tables under UTC+8.)
  14. [14] Doãn Lộc (Yinlu); Mai Giác Thành (Mei Juecheng); Càn Long Đế ngự phê (Qianlong Emperor). Khâm Định Hiệp Kỷ Biện Phương Thư (欽定協紀辨方書). 1741. (Khâm thiên giám phụng sắc biên soạn, Tứ Khố Toàn Thư đệ 807 sách, quy phạm chính thống về Thập Nhị Trực, Nhị Thập Bát Tú, Thần Sát và Tuyển Nhật Pháp.)
  15. [15] Quách Thủ Kính (Guo Shoujing); Vương Tuần (Wang Xun). Thọ Thời Lịch (授時曆). 1281. (Kỷ lục trong Nguyên Sử Quyển 52-55, định nghĩa quy tắc 24 tiết khí, trung khí và xác định tháng nhuận.)
  16. [16] Lê Quý Đôn. Vân Đài Loại Ngữ (芸臺類語) — Quyển 1: Ngôn tạo khảo. 1777. (Chuyên khảo bách khoa toàn thư thế kỷ 18 về thiên văn, khí tượng và quy tắc lịch pháp Đại Việt.)
  17. [17] Quizzman Research & Engineering Team. Quizzman Lunisolar Calendar Engine. 2026. [URL] (Canonical implementation repository containing Node.js core, VSOP87 reduction, and regression test suites.)
  18. [18] Quizzman Research & Quality Assurance Group. Quizzman Calendar Engine Algorithm Audit and Fix Verification Report. Quizzman Research Technical Dossier AUD-2026-CAL-02, 2026. [URL] (Formal algorithmic audit documenting issues A01 through A09 and their mathematical resolutions.)