Skip to main content

Vietnamese Lunar Calendar Library for Python - Thư viện Âm lịch Việt Nam

Project description

vnlunar - Vietnamese Lunar Calendar for Python

Thư viện Âm lịch Việt Nam cho Python - Vietnamese Lunar Calendar Library

Giới thiệu / Introduction

vnlunar là thư viện Python để chuyển đổi và tính toán lịch âm Việt Nam, dựa trên thuật toán thiên văn chính xác. Thư viện hỗ trợ:

  • Chuyển đổi dương lịch <-> âm lịch
  • Tính Can Chi, Ngũ Hành
  • Xem ngày tốt xấu (Hoàng Đạo / Hắc Đạo)
  • 12 Sao Kiến Trừ, 28 Tú Sao
  • Hướng xuất hành, Tuổi xung
  • Giờ Hoàng Đạo
  • Và nhiều tính năng khác...

Cài đặt / Installation

pip install vnlunar

Hoặc cài đặt từ source:

git clone https://github.com/min9802/pyvnlunar.git
cd pyvnlunar
pip install -e .

Sử dụng cơ bản / Basic Usage

1. Chuyển đổi dương lịch sang âm lịch

import vnlunar

# Lấy thông tin âm lịch của ngày 7/11/2025
lunar = vnlunar.get_lunar_date(7, 11, 2025)

print(f"Ngày âm lịch: {lunar['day']}/{lunar['month']}/{lunar['year']}")
print(f"Tháng nhuận: {'Có' if lunar['leap'] == 1 else 'Không'}")

2. Lấy thông tin đầy đủ về một ngày

import vnlunar

info = vnlunar.get_full_info(7, 11, 2025)

print(f"Dương lịch: {info['solar']['day']}/{info['solar']['month']}/{info['solar']['year']}")
print(f"Âm lịch: {info['lunar']['day']}/{info['lunar']['month']}/{info['lunar']['year']}")
print(f"Can Chi ngày: {info['can_chi']['day']}")
print(f"Can Chi tháng: {info['can_chi']['month']}")
print(f"Can Chi năm: {info['can_chi']['year']}")
print(f"Sao: {info['12_stars']['name']} - {info['12_stars']['description']}")
print(f"Hoàng/Hắc Đạo: {info['day_type']['type']}")

3. Xem ngày tốt xấu cho các việc

import vnlunar

# Tính Julian Day Number
jd = vnlunar.jdn(7, 11, 2025)

# Xem ngày có tốt cho cưới hỏi không
ket_qua = vnlunar.check_good_day(jd, "wedding")
print(f"Ngày {ket_qua['star']['name']}: {ket_qua['description']}")

# Tìm các ngày tốt để khai trương trong tháng 11/2025
start_jd = vnlunar.jdn(1, 11, 2025)
end_jd = vnlunar.jdn(30, 11, 2025)
ngay_tot = vnlunar.find_good_days(start_jd, end_jd, "opening")

print(f"\nCác ngày tốt để khai trương trong tháng 11/2025:")
for ngay in ngay_tot:
    print(f"  {ngay['solar']['day']}/{ngay['solar']['month']}/{ngay['solar']['year']} - Sao {ngay['star']['name']}")

4. Kiểm tra tuổi xung

import vnlunar

jd = vnlunar.jdn(7, 11, 2025)
nam_sinh = 1990

# Kiểm tra tuổi có xung không
xung = vnlunar.check_age_conflict(jd, nam_sinh)
print(f"Năm sinh {nam_sinh} xung với ngày này: {'Có' if xung else 'Không'}")

# Lấy thông tin chi tiết về tuổi xung
tuoi_xung_info = vnlunar.get_conflicting_ages(jd, 2025)
print(f"\n{tuoi_xung_info['description']}")
print(f"Các tuổi xung trong ngày này:")
for tuoi in tuoi_xung_info['ages'][:5]:
    print(f"  Tuổi {tuoi['age']}: {tuoi['can_chi']} ({tuoi['animal']})")

5. Xem hướng xuất hành

import vnlunar

jd = vnlunar.jdn(7, 11, 2025)

# Hướng theo ngày
huong_ngay = vnlunar.get_direction_info(jd)
print(f"Hướng tốt: {', '.join(huong_ngay['good_directions'])}")
print(f"Hướng xấu: {', '.join(huong_ngay['bad_directions'])}")

# Hướng theo tuổi
huong_tuoi = vnlunar.get_age_direction(1990, 2025)
print(f"\nTuổi: {huong_tuoi['age']} ({huong_tuoi['zodiac']})")
print(f"Hướng tốt: {', '.join(huong_tuoi['good_directions'])}")

# Hướng kết hợp
huong_xuat_hanh = vnlunar.get_travel_direction(jd, 1990, 2025)
print(f"\n{huong_xuat_hanh['advice']}")

6. Giờ Hoàng Đạo

import vnlunar

jd = vnlunar.jdn(7, 11, 2025)

# Lấy các giờ Hoàng Đạo trong ngày
gio_hoang_dao = vnlunar.get_auspicious_hours(jd)
print("Giờ Hoàng Đạo:")
for hour in gio_hoang_dao:
    print(f"  {hour['hour_name']}: {hour['time_range']}")

# Kiểm tra một giờ cụ thể
gio_info = vnlunar.check_travel_hour(jd, "Tý")
print(f"\nGiờ {gio_info['zodiac_hour']}: {'TỐT' if gio_info['is_good'] else 'XẤU'}")

Các loại việc hỗ trợ xem ngày

  • "wedding": Cưới hỏi
  • "building": Xây nhà
  • "travel": Xuất hành
  • "opening": Khai trương
  • "moving": Chuyển nhà
  • "investing": Đầu tư

API Reference

Core Functions

  • jdn(day, month, year): Chuyển ngày dương lịch sang Julian Day Number
  • jdn2date(jd): Chuyển Julian Day Number sang ngày dương lịch
  • get_lunar_date(day, month, year): Lấy thông tin âm lịch
  • convert_solar_to_lunar(day, month, year, timezone): Chuyển đổi với múi giờ tùy chỉnh

Calendar Functions

  • get_can_chi(lunar): Lấy Can Chi của ngày, tháng, năm
  • get_year_can_chi(year): Lấy Can Chi của năm
  • get_year_element(year): Lấy Ngũ Hành của năm
  • get_auspicious_hours(jd): Lấy giờ Hoàng Đạo
  • get_day_of_week(jd): Lấy thứ trong tuần

Astrology Functions

  • get_12_stars(lunar_day, lunar_month): Lấy 12 Sao Kiến Trừ
  • get_12_gods(jd): Lấy 12 Thần Hoàng Đạo/Hắc Đạo
  • get_12_constructions(lunar_day, lunar_month): Lấy Thập Nhị Trực
  • get_28_mansions(jd): Lấy 28 Tú Sao
  • get_nayin(jd): Lấy Nạp Âm
  • get_day_type(lunar_day, lunar_month): Kiểm tra Hoàng Đạo/Hắc Đạo
  • check_good_day(jd, activity): Xem ngày tốt xấu cho việc
  • find_good_days(start_jd, end_jd, activity): Tìm các ngày tốt

Direction Functions

  • get_conflicting_ages(jd, current_year): Lấy thông tin tuổi xung
  • check_age_conflict(jd, birth_year): Kiểm tra tuổi xung
  • get_direction_info(jd): Lấy hướng theo Ngọc Hạp Thông Thư
  • get_god_directions(jd): Lấy hướng thần (Thần Tài, Hỷ Thần, Phúc Thần)
  • get_age_direction(birth_year, current_year): Hướng theo tuổi
  • get_travel_direction(jd, birth_year, current_year): Hướng xuất hành tổng hợp
  • check_travel_hour(jd, zodiac_hour): Kiểm tra giờ xuất hành

Main Function

  • get_full_info(day, month, year): Lấy tất cả thông tin của một ngày

So sánh với cnlunar (Lịch Trung Quốc)

Tính năng vnlunar (VN) cnlunar (CN)
Múi giờ mặc định UTC+7 (VN) UTC+8 (CN)
Thuật toán Thiên văn VN Thiên văn CN
Tên Can Chi Tiếng Việt Tiếng Trung
Con giáp Mèo (năm Mão) Thỏ (năm Mão)
Tiết khí Tiếng Việt Tiếng Trung
Hướng xuất hành Theo truyền thống VN Theo truyền thống CN

Đóng góp / Contributing

Mọi đóng góp đều được hoan nghênh! Vui lòng:

  1. Fork repository
  2. Tạo branch mới (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Mở Pull Request

License

Free for personal and non-commercial use.

Version

Current version: 1.0.4

Credits

  • Dựa trên thuật toán thiên văn của Ho Ngoc Duc
  • Tham khảo: "Lịch Việt Nam - Nguyên lý và các bảng tra cứu" - Hoàng Xuân Hãn

Liên hệ / Contact


Made with ❤️ for Vietnamese Lunar Calendar

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vnlunar-1.0.4.tar.gz (27.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vnlunar-1.0.4-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

File details

Details for the file vnlunar-1.0.4.tar.gz.

File metadata

  • Download URL: vnlunar-1.0.4.tar.gz
  • Upload date:
  • Size: 27.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for vnlunar-1.0.4.tar.gz
Algorithm Hash digest
SHA256 6c7c387072f9138bd7c1435f3a4de23500c5d132c3671f0bb41f569527048a50
MD5 e1e5cb7426e1ec82e42e2a7f78115102
BLAKE2b-256 7f56320d7324b81d888148013d641bc91299fe9c56a1c8a250f0ce6a0549e31e

See more details on using hashes here.

File details

Details for the file vnlunar-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: vnlunar-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for vnlunar-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 609775e444c784acb4e91c5e206fa67ddd41e0699b7e70025a86d029c4888ac1
MD5 dfba9b64b86d273617088a4fcb0a86be
BLAKE2b-256 dcd7ed8dbd839e17e42e4fc133e4ccabd810b094a769933fbb6f09542f2ad942

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page