Cách đổi ngày dương sang ngày âm sang dương, đổi ngày dương sang âm
Hồ Ngọc Đức
Bài viết sau ra mắt cách tính âm lịch nước ta và mô tả một số trong những thuật toán cần sử dụng để chuyển đổi giữa ngày dương lịch và ngày âm lịch. Các thuật toán mô tả tại đây đã được đơn giản hóa những để độc giả tiện theo dõi và quan sát và dễ ợt sử dụng vào vấn đề lập trình, cho nên độ đúng đắn của bọn chúng thấp hơn độ đúng chuẩn của chương trình âm lịch trực tuyến đường tại http://www.informatik.uni-leipzig.de/~duc/amlich/. (Một phiên bạn dạng cũ của nội dung bài viết này trình làng vài thuật toán khá khác, rất có thể khó tiến hành hơn một chút. Bạn dạng cũ này hoàn toàn có thể xem trên đây.)Quy phương tiện của âm lịch Việt Nam
Thuật toán thay đổi giữa ngày dương cùng âm
Script), chúng ta có thể định nghĩa một hàm INT(x) để lấy số nguyên lớn nhất không vượt quá x: INT(5)=5, INT(3.2)=3, INT(-5)=-5, INT(-3.2)=-4 v.v. Khi đó, INT(m/10) vẫn trả lại kết quả của phép chia số nguyên. (Nhiều ngữ điệu có sẵn hàm floor() cho phép làm vấn đề này.)Các phép đổi khác giữa ngày tháng với số ngày Julius có thể được triển khai với mã JavaScript như sau:function jd
From
Date(dd, mm, yy)var a, y, m, jd;a = INT((14 - mm) / 12);y = yy+4800-a;m = mm+12*a-3;jd = dd + INT((153*m+2)/5) + 365*y + INT(y/4) - INT(y/100) + INT(y/400) - 32045;if (jd function jd
To
Zone là thời gian chênh lệch giữa giờ địa phương với giờ UTC (hay GMT). (Để tính lịch Việt Nam, rước time
Zone = 7.0). Các phương pháp sau được ra mắt với mã Java
Script. Bạn có thể tải tủ sách Java
New
Moon
Day(k, time
Zone)var T, T2, T3, dr, Jd1, M, Mpr, F, C1, deltat, Jd
New;T = k/1236.85; // Time in Julian centuries from 1900 January 0.5T2 = T * T;T3 = T2 * T;dr = PI/180;Jd1 = 2415020.75933 + 29.53058868*k + 0.0001178*T2 - 0.000000155*T3;Jd1 = Jd1 + 0.00033*Math.sin((166.56 + 132.87*T - 0.009173*T2)*dr); // Mean new moon
M = 359.2242 + 29.10535608*k - 0.0000333*T2 - 0.00000347*T3; // Sun"s mean anomaly
Mpr = 306.0253 + 385.81691806*k + 0.0107306*T2 + 0.00001236*T3; // Moon"s mean anomaly
F = 21.2964 + 390.67050646*k - 0.0016528*T2 - 0.00000239*T3; // Moon"s argument of latitude
New
Moon
Day vẫn biết ngày thời điểm đầu tháng âm lịch chứa ngày N, từ đó ta biết ngày N là mùng mấy âm lịch.
Bạn đang xem: Cách đổi ngày dương sang ngày âm
Tính tọa độ khía cạnh trời
Để biết Trung khí nào nằm vào thời điểm tháng âm kế hoạch nào, ta chỉ việc tính xem khía cạnh trời nằm ở khoảng nào trê tuyến phố hoàng đạo vào thời điểm bước đầu một tháng âm lịch. Ta chia đường hoàng đạo làm 12 phần với đánh số những cung này từ bỏ 0 đến 11: trường đoản cú Xuân phân đến Cốc vũ là 0; từ ly vũ cho Tiểu mãn là 1; từ tè mãn mang lại Hạ chí là 2; v.v.. Mang lại jdn là số ngày Julius của bất kỳ một ngày, phương pháp sau này sẽ trả lại số cung nói trên.function getSun
Longitude(jdn, time
Zone)var T, T2, dr, M, L0, DL, L;T = (jdn - 2451545.5 - time
M = 357.52910 + 35999.05030*T - 0.0001559*T2 - 0.00000048*T*T2; // mean anomaly, degree
L0 = 280.46645 + 36000.76983*T + 0.0003032*T2; // mean longitude, degree
DL = (1.914600 - 0.004817*T - 0.000014*T2)*Math.sin(dr*M);DL = DL + (0.019993 - 0.000101*T)*Math.sin(dr*2*M) + 0.000290*Math.sin(dr*3*M);L = L0 + DL; // true longitude, degree
L = L*dr;L = L - PI*2*(INT(L/(PI*2))); // Normalize to lớn (0, 2*PI)return INT(L / PI * 6)Với hàm này ta hiểu rằng một tháng âm lịch đựng Trung khí nào. đưa sử một tháng âm lịch bước đầu vào ngày N1 với tháng sau đó bắt đầu vào ngày N2 và hàm get
Sun
Longitude cho kết quả là 8 với N1 với 9 với N2. Như vậy tháng âm lịch bước đầu ngày N1 là tháng cất Đông chí: trong tầm từ N1 đến N2 có một ngày khía cạnh trời di chuyển từ cung 8 (sau tiểu tuyết) lịch sự cung 9 (sau Đông chí). Giả dụ hàm get
Sun
Lunar
Month11(yy, time
Zone)var k, off, nm, sun
Long;off = jd
From
Date(31, 12, yy) - 2415021;k = INT(off / 29.530588853);nm = get
New
Moon
Day(k, time
Zone);sun
Long = get
Sun
Longitude(nm, time
Zone); // sun longitude at local midnightif (sun
Long >= 9) nm = get
New
Moon
Day(k-1, time
Zone);return nm;
Xác định mon nhuận
Nếu thân hai mon 11 âm kế hoạch (tức tháng gồm chứa Đông chí) tất cả 13 tháng âm định kỳ thì năm âm định kỳ đó bao gồm tháng nhuận. Để khẳng định tháng nhuận, ta sử dụng hàm getSun
Longitude như đã nói ở trên. Cho a11 là ngày bắt đầu tháng 11 âm lịch mà 1 trong những 13 tháng tiếp đến là tháng nhuận. Hàm sau cho biết tháng nhuận nằm ở chỗ nào sau tháng 11 này.function get
Leap
Month
Offset(a11, time
Zone)var k, last, arc, i;k = INT((a11 - 2415021.076998695) / 29.530588853 + 0.5);last = 0;i = 1; // We start with the month following lunar month 11arc = get
Sun
Longitude(get
New
Moon
Day(k+i, time
Zone), time
Zone);do last = arc;i++;arc = get
Sun
Longitude(get
New
Moon
Day(k+i, time
Zone), time
Zone); while (arc != last && i đưa sử hàm get
Leap
Month
Offset trả lại quý hiếm 4, như vậy tháng nhuận đã là mon sau tháng 2 thường. (Tháng thiết bị 4 sau mon 11 lẽ ra là tháng 3, nhưng vày đó là mon nhuận nên sẽ đem tên của mon trước đó tức tháng 2, với tháng lắp thêm 5 sau mon 11 mới là mon 3).
Xem thêm: Cách Đổi Điểm Tích Lũy Mobifone (Kết Nối Dài Lâu) Nhận Tới 350 Phút Gọi Miễn Phí
Đổi ngày dương dd/mm/yyyy ra ngày âm
Với các phương pháp hỗ trợ trên ta rất có thể đổi ngày dương dd/mm/yy ra ngày âm dễ dàng. đầu tiên ta coi ngày monthStart bước đầu tháng âm định kỳ chứa ngày này là ngày nào (dùng hàm get
New
Moon
Day như trên đã nói). Sau đó, ta tìm những ngày a11 với b11 là ngày bắt đầu các mon 11 âm định kỳ trước với sau ngày vẫn xem xét. Giả dụ hai ngày này cách nhau dưới 365 ngày thì ta chỉ còn cần coi month
Start với a11 bí quyết nhau từng nào tháng là hoàn toàn có thể tính được dd/mm/yy nằm vào tháng mấy âm lịch. Ngược lại, nếu a11 cùng b11 phương pháp nhau khoảng tầm 13 mon âm lịch thì ta phải tìm coi tháng nào là tháng nhuận cùng từ đó suy ra ngày đã tìm nằm trong tháng nào.function convert
Solar2Lunar(dd, mm, yy, time
Zone)var k, day
Number, month
Start, a11, b11, lunar
Day, lunar
Month, lunar
Year, lunar
Leap;day
Number = jd
From
Date(dd, mm, yy);k = INT((day
Number - 2415021.076998695) / 29.530588853);month
Start = get
New
Moon
Day(k+1, time
Zone);if (month
Start > day
Number) month
Start = get
New
Moon
Day(k, time
Zone);a11 = get
Lunar
Month11(yy, time
Zone);b11 = a11;if (a11 >= month
Start) lunar
Year = yy;a11 = get
Lunar
Month11(yy-1, time
Zone); else lunar
Year = yy+1;b11 = get
Lunar
Month11(yy+1, time
Zone);lunar
Day = day
Number-month
Start+1;diff = INT((month
Start - a11)/29);lunar
Leap = 0;lunar
Month = diff+11;if (b11 - a11 > 365) leap
Month
Diff = get
Leap
Month
Offset(a11, time
Zone);if (diff >= leap
Month
Diff) lunar
Month = diff + 10;if (diff == leap
Month
Diff) lunar
Leap = 1;if (lunar
Month > 12) lunar
Month = lunar
Month - 12;if (lunar
Month >= 11 && diff
Đổi âm định kỳ ra dương lịch
Cách làm cũng như như đổi ngày dương lịch sự ngày âm.function convertLunar2Solar(lunar
Day, lunar
Month, lunar
Year, lunar
Leap, time
Zone)var k, a11, b11, off, leap
Off, leap
Month, month
Start;if (lunar
Month 365) leap
Off = get
Leap
Month
Offset(a11, time
Zone);leap
Month = leap
Off - 2;if (leap
Month = leap
Off) off += 1;k = INT(0.5 + (a11 - 2415021.076998695) / 29.530588853);month
Start = get
New
Moon
Day(k+off, time
Zone);return jd
To
Date(month
Start+lunar
Day-1);
Tính ngày thứ và Can-Chi cho một ngày và tháng âm lịch
Ngày thứ lặp lại theo chu kỳ 7 ngày, như thế để biết một ngày d/m/y bất kỳ là thiết bị mấy ta chỉ việc đào bới tìm kiếm số dư của số ngày Julius của thời nay cho 7.Để tính Can của năm Y, tìm kiếm số dư của Y+6 chia cho 10. Số dư 0 là Giáp, 1 là Ất v.v. Để tính đưa ra của năm, phân tách Y+8 đến 12. Số dư 0 là Tý, một là Sửu, 2 là dần v.v.Hiệu Can-Chi của ngày lặp lại theo chu kỳ 60 ngày, như vậy nó cũng hoàn toàn có thể tính được một cách 1-1 giản. Mang lại N là số ngày Julius của ngày dd/mm/yyyy. Ta phân chia N+9 cho 10. Số dư 0 là Giáp, 1 là Ất v.v. Để tra cứu Chi, chia N+1 mang đến 12; số dư 0 là Tý, 1 là Sửu v.v.Trong một năm âm lịch, mon 11 là tháng Tý, tháng 12 là Sửu, tháng Giêng là tháng dần dần v.v. Can của tháng M năm Y âm lịch được xem theo công thức sau: chia Y*12+M+3 mang đến 10. Số dư 0 là Giáp, một là Ất v.v.Ví dụ, Can-Chi của tháng 3 âm kế hoạch năm ngay cạnh Thân 2004 là Mậu Thìn: mon 3 âm lịch là mon Thìn, với (2004*12+3+3) % 10 = 24054 % 10 = 4, do vậy Can của mon là Mậu.Một tháng nhuận không có tên riêng cơ mà lấy tên của mon trước đó kèm thêm chữ "Nhuận", VD: mon 2 nhuận năm gần kề Thân 2004 là mon Đinh Mão nhuận.Tài liệu tham khảo
Eric Weisstein"s World of AstronomyCalendar FAQHồ Ngọc Đức, Java
Script lunar calendar - công tác âm lịch vn bằng Java
Script (sử dụng bảng tính sẵn mang đến thời kỳ 1800-2199)Tính âm định kỳ dùng các ngôn ngữ khác: Java
Ngày dương kế hoạch là sản phẩm công nghệ Bảy 25 - 3 - 2023 là ngày 4 tháng 2 năm 2023 . Theo Can chi : Ngày Nhâm Ngọ mon Ất Mão Năm Quý Mão
0:00 | Giờ: Canh Tý |
Kim Quỹ | Hoàng Đạo |
1:00 | Giờ: Tân Sửu |
Kim Đường ( Bảo Quang) | Hoàng Đạo |
3:00 | Giờ: Nhâm Dần |
Bạch Hổ | Hắc Đạo |
5:00 | Giờ:Quý Mão |
Ngọc Đường | Hoàng Đạo |
7:00 | Giờ: gần kề Thìn |
Thiên Lao | Hắc Đạo |
9:00 | Giờ: Ất Tỵ |
Nguyên Vũ | Hắc Đạo |
11:00 | Giờ: Bính Ngọ |
Tư Mệnh | Hoàng Đạo |
13:00 | Giờ: Đinh Mùi |
Câu Trận | Hắc Đạo |
15:00 | Giờ: Mậu Thân |
Thanh Long | Hoàng Đạo |
17:00 | Giờ: Kỷ Dậu |
Minh Đường | Hoàng Đạo |
19:00 | Giờ: Canh Tuất |
Thiên Hình | Hắc Đạo |
21:00 | Giờ: Tân Hợi |
Chu Tước | Hắc Đạo |
23:00 | Giờ: Canh Tý |
Kim Quỹ | Hoàng Đạo |
Ngày Hoàng Đạo | Sao: Kim Quỹ | ||
Giờ Hoàng đạo | Tí Sửu Mão Ngọ Thân Dậu | ||
Giờ Hắc đạo | dần dần Thìn Tỵ mùi Tuất Hợi | ||
Năm | Kim | Bạch | Bạch kim |
Mùa | Mộc | Mùa Xuân | Trọng |
Ngày | Mộc | Dương liễu | Gỗ dương liễu |
Tuổi xung năm | Tân Dậu, Đinh Dậu, Đinh Mão | ||
Tuổi xung ngày | Giáp Tí, Canh Tí, Bính Tuất, Bính Thìn | ||
Tiết khí | Giữa : Xuân phân ( thân xuân ) và thanh minh ( Trời trong sạch ) | ||
Sao | Vị | Vị thổ bệnh trĩ nội trĩ ngoại | |
Ngũ hành | Thổ | Chủ trì :Thứ 7 | |
Động vật | Chim Trĩ | Diễn giải | |
Trực | Bình | Tốt với đa số việc | |
Hướng xuất hành | |||
Hỷ thần | Nam | ||
Tài thần | Tây | ||
Cát tinh | Diễn giải | ||
Dân nhật, Thời đức | Tốt hầu hết việc | ||
Ích Hậu | Tốt đều việc, nhất là giá chỉ thú | ||
Thiên Ân | Tốt đông đảo việc | ||
Thiên Tài | Tốt cho vấn đề cầu tài lộc, khai trương | ||
Sát tinh | Kỵ | Ghi chú | |
Hà khôi Cẩu Giảo | Kỵ bắt đầu khởi công xây công ty cửa, xấu hồ hết việc | ||
Hoả tinh | Xấu cùng với lợp nhà, có tác dụng bếp | ||
Lục Bất thành | Xấu so với xây dựng | ||
Thiên Lại | Xấu hầu như việc | ||
Tiểu Hao | Xấu về ghê doanh, ước tài | ||
Trường Đoản Tinh | May áo, hấp thụ tài, giao dịch, lập di chúc,đề cử bạn |

Xem phong thuỷ
Vật phẩm phong thuỷ
Facebook Fanpage

