Âm Lịch Việt Nam cho Python 🇻🇳
lunar-vn là thư viện Python siêu nhẹ, typed, không có phụ thuộc, dùng để lấy âm lịch Việt Nam, tra ngày lễ phổ biến và tính Can Chi.
Module này được thiết kể cho:
- Ứng dụng lịch âm Việt Nam.
- Tích hợp vào hệ thống nhân sự, chấm công, đặt lịch, sự kiện.
- Bot hoặc backend cần ngày âm lịch Việt Nam.
- Ưu tiên sự chính xác, đơn giản, gọn nhẹ.
- CLI ngay trên terminal.
Tính năng
- Không có dependency runtime.
- Hỗ trợ type hint và PEP 561 (
py.typed). - Chuyển đổi dương lịch sang âm lịch và ngược lại.
- Hỗ trợ tháng nhuận chính xác.
- Múi giờ mặc định
UTC+7theo Việt Nam. - Tính Can Chi năm, tháng, ngày, giờ.
- Liệt kê, tra cứu ngày lễ dương lịch và âm lịch phổ biến ở Việt Nam.
- CLI
lunar-vnvới output text hoặc JSON. - Khoảng ngày dương lịch hỗ trợ:
1900-01-01đến2100-12-31.
Cài đặt
pip install lunar-vn
CLI
Xem âm lịch hôm nay:
lunar-vn today
Đổi dương lịch sang âm lịch:
lunar-vn solar 2026-02-17
Đổi âm lịch sang dương lịch:
lunar-vn lunar 1 1 2026
Liệt kê ngày lễ trong năm dương lịch:
lunar-vn holidays 2026
Xem Can Chi theo ngày dương lịch:
lunar-vn canchi 2024-02-10
Thêm --json vào cuối lệnh để nhận dữ liệu JSON:
lunar-vn solar 2026-02-17 --json
Ví dụ JSON:
{"holiday": "Tết Nguyên Đán", "lunar": {"day": 1, "leap": false, "month": 1, "year": 2026}, "solar": "2026-02-17"}
Với tháng âm lịch nhuận, dùng --leap:
lunar-vn lunar 1 2 2004 --leap
Sử dụng trong Python
Chuyển đổi cơ bản
import datetime as dt
from lunar_vn import solar_to_lunar, lunar_to_solar, LunarDate
# Tết nguyên đán
solar_date = dt.date(2026, 2, 17)
lunar_date = solar_to_lunar(solar_date)
print(lunar_date) # LunarDate(day=1, month=1, year=2026, leap=False)
# Lunar -> Solar
print(lunar_to_solar(LunarDate(1, 1, 2026))) # 2026-02-17
Âm lịch hôm nay
import datetime as dt
from lunar_vn import solar_to_lunar
today = dt.date.today()
lunar = solar_to_lunar(today)
print(f"Solar: {today}")
print(f"Lunar: {lunar.day}/{lunar.month}/{lunar.year}")
print(f"Leap month: {lunar.leap}")
Can Chi và ngày lễ
import datetime as dt
from lunar_vn import can_chi, holidays, jd_from_date, list_holidays, solar_to_lunar
date = dt.date(2024, 2, 10)
lunar = solar_to_lunar(date)
# Lấy năm Can Chi
print(can_chi.get_year_can_chi(lunar.year)) # Giáp Thìn
# Lấy ngày Can Chi
jdn = jd_from_date(date.day, date.month, date.year)
print(can_chi.get_day_can_chi(jdn)) # Giáp Thìn
# Kiểm tra ngày lễ
print(holidays.get_holiday(date)) # Tết Nguyên Đán
# Danh sách ngày lễ Dương lịch
for solar_date, name in list_holidays(2026):
print(solar_date, name)
Ngày lễ Việt Nam
lunar-vn có sẵn một tập ngày lễ dương lịch và âm lịch phổ biến.
Ngày lễ dương lịch:
- Tết Dương Lịch
- Ngày Lễ Tình Nhân (Valentine)
- Ngày Quốc Tế Phụ Nữ
- Ngày Giải Phóng Miền Nam
- Ngày Quốc Tế Lao Động
- Ngày Quốc Tế Thiếu Nhi
- Ngày Quốc Khánh
- Ngày Phụ Nữ Việt Nam
- Ngày Nhà Giáo Việt Nam
- Ngày Thành Lập Quân Đội Nhân Dân Việt Nam
- Lễ Giáng Sinh
Ngày lễ âm lịch:
- Tết Nguyên Đán
- Rằm Tháng Giêng
- Tết Hàn Thực
- Giỗ Tổ Hùng Vương
- Lễ Phật Đản
- Tết Đoan Ngọ
- Lễ Thất Tịch
- Lễ Vu Lan
- Tết Trung Thu
- Tết Hạ Nguyên
- Tết Ông Công Ông Táo
Các nhắc lịch âm phổ biến mỗi tháng:
- Mùng 1
- Rằm
Benchmark
Chạy benchmark:
PYTHONPATH=src python3 scripts/benchmark.py
Kỳ vọng: hơn 100.000 lượt chuyển đổi mỗi giây trên máy phổ thông.
Độ chính xác và phạm vi
lunar-vn tập trung vào các nhu cầu cốt lõi của âm lịch Việt Nam: chuyển đổi ngày, Can Chi và ngày lễ phổ biến. Thư viện không mở rộng sang Vạn Sự, tử vi, giờ hoàng đạo hoặc chọn ngày tốt để API nhỏ, rõ và dễ kiểm chứng.
Khoảng ngày dương lịch hỗ trợ là 1900-01-01 đến 2100-12-31. Test suite có kiểm tra roundtrip dương lịch -> âm lịch -> dương lịch trong toàn bộ khoảng này.
So sánh với âm lịch Trung Quốc
Xem tài liệu tại docs/comparison_chinese_lunar.md.
Nguồn
Thuật toán âm lịch Việt Nam dựa trên đặc tả của Hồ Ngọc Đức tại: https://xemamlich.uhm.vn
Thư viện này là bản triển khai lại bằng Python của thuật toán đã công bố.
License
MIT License.
Metadata
Release files for lunar-vn 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lunar_vn-1.4.0.tar.gz | 17.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lunar_vn-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.4 kB
Release files / lunar_vn-1.4.0.tar.gz
| Download URL | lunar_vn-1.4.0.tar.gz |
|---|---|
| Size | 17.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d8101646226ead82932d0c17075cc6ed48a7f74803bc399d56a743d4f7c11bf9
|
|
BLAKE2b-256 checksum How to use checksums |
1d9915477fcd75dd6a875f7f9306b0aeb44fe047c24eb9b20b3eb4f18847b2bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.
Transparency logRelease files / lunar_vn-1.4.0-py3-none-any.whl
| Download URL | lunar_vn-1.4.0-py3-none-any.whl |
|---|---|
| Size | 13.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c42506eed4bc599bd3f88777ab2650f8ea60aee1cb69980073b731bb74c34749
|
|
BLAKE2b-256 checksum How to use checksums |
b989017dcc744c7a9066288c440dc9f0da5b6cd4a2bf35ecaa263fa03260059e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.
Transparency log