Skip to main content

Âm Lịch Việt Nam cho Python 🇻🇳

PyPI version CI License PyPI Downloads Monthly Downloads

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+7 theo 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-vn với output text hoặc JSON.
  • Khoảng ngày dương lịch hỗ trợ: 1900-01-01 đến 2100-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)

Source distribution for lunar-vn 1.4.0
File Size Uploaded
lunar_vn-1.4.0.tar.gz 17.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lunar-vn 1.4.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

1.4.0 This release

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page