Hồ Ngọc Đức
Bài viết sau giới thiệu cách tính âm lịch vn và mô tả một trong những thuật toán sử dụng để đổi khác giữa ngày dương lịch và ngày âm lịch. Những thuật toán mô tả tại chỗ này đã được đơn giản và dễ dàng hóa các để bạn đọc tiện quan sát và theo dõi và dễ ợt sử dụng vào việc lập trình, cho nên vì vậy độ đúng chuẩn của chúng thấp hơn độ đúng mực của công tác âm kế hoạch trực tuyến đường tại http://www.informatik.uni-leipzig.de/~duc/amlich/. (Một phiên bản cũ của bài viết này ra mắt vài thuật toán hơi khác, hoàn toàn có thể khó tiến hành hơn một chút. Phiên bản cũ này hoàn toàn có thể xem tại đây.)Quy giải pháp của âm kế hoạch Việt Nam
Thuật toán chuyển đổi giữa ngày dương và âm
Script), chúng ta cũng 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. Lúc đó, INT(m/10) sẽ trả lại kết quả của phép phân tách số nguyên. (Nhiều ngôn từ có sẵn hàm floor() được cho phép làm vấn đề này.)Các phép biến hóa giữa ngày tháng và 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à khoảng thời gian chênh lệch thân giờ địa phương cùng giờ UTC (hay GMT). (Để tính định kỳ Việt Nam, lấy time
Zone = 7.0). Các cách thức sau được reviews với mã Java
Script. Chúng ta có thể tải thư viện 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 sẽ biết ngày đầu tháng âm lịch cất ngày N, từ kia ta biết ngày N là mùng mấy âm lịch.
Bạn đang xem: Đổi ngày dương lịch sang ngày am lịch
Tính tọa độ mặt trời
Để biết Trung khí như thế nào nằm trong thời điểm tháng âm lịch nào, ta chỉ việc tính xem khía cạnh trời nằm ở vị trí khoảng nào trên tuyến đường hoàng đạo vào thời điểm bước đầu một mon âm lịch. Ta phân tách đường hoàng đạo làm 12 phần cùng đánh số những cung này trường đoản cú 0 mang lại 11: tự Xuân phân mang đến Cốc vũ là 0; từ ly vũ mang đến Tiểu mãn là 1; từ tè mãn đến Hạ chí là 2; v.v.. Mang đến jdn là số ngày Julius của ngẫu nhiên một ngày, phương pháp sau này đã 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 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 cất Trung khí nào. Mang sử một mon âm lịch ban đầu vào ngày N1 cùng tháng sau đó ban đầu vào ngày N2 cùng hàm get
Sun
Longitude cho tác dụng là 8 cùng với N1 cùng 9 với N2. Do đó tháng âm lịch ban đầu ngày N1 là tháng đựng Đông chí: trong vòng từ N1 đến N2 tất cả một ngày mặt trời dịch rời từ cung 8 (sau tiểu tuyết) sang cung 9 (sau Đông chí). Nếu 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 tháng nhuận
Nếu thân hai mon 11 âm định kỳ (tức tháng tất cả chứa Đông chí) tất cả 13 mon âm kế hoạch thì năm âm kế hoạch đó tất cả tháng nhuận. Để khẳng định tháng nhuận, ta thực hiện hàm getSun
Longitude như vẫn nói sinh sống trên. Cho a11 là ngày bắt đầu tháng 11 âm định kỳ mà một trong các 13 tháng tiếp đến là tháng nhuận. Hàm sau cho thấy thêm tháng nhuận nằm tại đoạn nào sau mon 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 trả sử hàm get
Leap
Month
Offset trả lại quý giá 4, như thế tháng nhuận sẽ là mon sau tháng 2 thường. (Tháng đồ vật 4 sau tháng 11 đáng ra là mon 3, nhưng vị đó là tháng nhuận nên sẽ rước tên của mon trước đó tức tháng 2, cùng tháng thứ 5 sau tháng 11 new là tháng 3).
Đổi ngày dương dd/mm/yyyy ra ngày âm
Với các phương thức hỗ trợ trên ta có thể đổi ngày dương dd/mm/yy ra ngày âm dễ dàng dàng. Trước tiên ta coi ngày monthStart bắt đầu tháng âm lịch chứa ngày này là ngày làm sao (dùng hàm get
New
Moon
Day như trên đang nói). Sau đó, ta tìm các ngày a11 cùng b11 là ngày ban đầu các mon 11 âm định kỳ trước và sau ngày vẫn xem xét. Trường hợp hai thời nay cách nhau dưới 365 ngày thì ta chỉ với cần xem month
Start cùng a11 bí quyết nhau bao nhiêu tháng là hoàn toàn có thể tính được dd/mm/yy nằm hồi tháng mấy âm lịch. Ngược lại, nếu như a11 cùng b11 bí quyết nhau khoảng tầm 13 tháng âm kế hoạch thì ta phải tìm xem tháng như thế nào là tháng nhuận và từ đó suy ra ngày sẽ tìm nằm trong thời điểm 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 lịch ra dương lịch
Cách làm tương tự như như thay đổ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ứ cùng Can-Chi cho ngày và mon âm lịch
Ngày thứ tái diễn theo chu kỳ 7 ngày, như vậy để biết một ngày d/m/y bất kỳ là sản phẩm mấy ta chỉ việc 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 phân tách cho 10. Số dư 0 là Giáp, 1 là Ất v.v. Để tính bỏ ra của năm, phân tách Y+8 đến 12. Số dư 0 là Tý, 1 là Sửu, 2 là dần dần v.v.Hiệu Can-Chi của ngày tái diễn 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. Cho N là số ngày Julius của ngày dd/mm/yyyy. Ta phân tách N+9 mang đến 10. Số dư 0 là Giáp, một là Ất v.v. Để tra cứu Chi, chia N+1 cho 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 v.v. Can của tháng M năm Y âm lịch được tính theo phương pháp sau: phân chia Y*12+M+3 cho 10. Số dư 0 là Giáp, 1 là Ất v.v.Ví dụ, Can-Chi của tháng 3 âm kế hoạch năm giáp Thân 2004 là Mậu Thìn: mon 3 âm định kỳ là tháng Thìn, với (2004*12+3+3) % 10 = 24054 % 10 = 4, bởi vậy Can của mon là Mậu.Một mon nhuận không mang tên riêng mà lại lấy thương hiệu của mon trước đó kèm thêm chữ "Nhuận", VD: tháng 2 nhuận năm ngay cạnh Thân 2004 là tháng Đinh Mão nhuận.Xem thêm: Hướng Dẫn Xem Trang Đã Thích Trên Facebook Bằng Điện Thoại, Cách Xem Các Page Đã Thích Trên Facebook
Tài liệu tham khảo
Eric Weisstein"s World of AstronomyCalendar FAQHồ Ngọc Đức, Java
Script lunar calendar - lịch trình âm lịch việt nam bằng Java
Script (sử dụng bảng tính sẵn mang lại thời kỳ 1800-2199)Tính âm kế hoạch dùng các ngôn ngữ khác: Java
Ngày dương định kỳ là Thứ tứ 29 - 3 - 2023 là ngày 8 tháng 2 năm 2023 . Theo Can chi : Ngày Bính Tuất mon Ất Mão Năm Quý Mão
0:00 | Giờ: Mậu Tý |
Thiên Lao | Hắc Đạo |
1:00 | Giờ: Kỷ Sửu |
Nguyên Vũ | Hắc Đạo |
3:00 | Giờ: Canh Dần |
Tư Mệnh | Hoàng Đạo |
5:00 | Giờ:Tân Mão |
Câu Trận | Hắc Đạo |
7:00 | Giờ: Nhâm Thìn |
Thanh Long | Hoàng Đạo |
9:00 | Giờ: Quý Tỵ |
Minh Đường | Hoàng Đạo |
11:00 | Giờ: giáp Ngọ |
Thiên Hình | Hắc Đạo |
13:00 | Giờ: Ất Mùi |
Chu Tước | Hắc Đạo |
15:00 | Giờ: Bính Thân |
Kim Quỹ | Hoàng Đạo |
17:00 | Giờ: Đinh Dậu |
Kim Đường ( Bảo Quang) | Hoàng Đạo |
19:00 | Giờ: Mậu Tuất |
Bạch Hổ | Hắc Đạo |
21:00 | Giờ: Kỷ Hợi |
Ngọc Đường | Hoàng Đạo |
23:00 | Giờ: Mậu Tý |
Thiên Lao | Hắc Đạo |
Ngày Hắc Đạo | Sao: Thiên Lao | ||
Giờ Hoàng đạo | dần dần Thìn Tỵ Thân Dậu Hợi | ||
Giờ Hắc đạo | Tí Sửu Mão Ngọ hương thơm Tuất | ||
Năm | Kim | Bạch | Bạch kim |
Mùa | Mộc | Mùa Xuân | Trọng |
Ngày | Thổ | Ốc thượng | Ðất trên mái nhà |
Tuổi xung năm | Tân Dậu, Đinh Dậu, Đinh Mão | ||
Tuổi xung ngày | Mậu Thìn, Nhâm Thìn, Nhâm Ngọ, Nhâm Tí | ||
Tiết khí | Giữa : Xuân phân ( thân xuân ) và giãi tỏ ( Trời trong sạch ) | ||
Sao | Sâm | Sâm thủy Viên | |
Ngũ hành | Thuỷ | Chủ trì :Thứ 4 | |
Động vật | con Vượn | Diễn giải | |
Trực | Nguy | Mọi bài toán đều xấu | |
Hướng xuất hành | |||
Hỷ thần | Tây Nam | ||
Tài thần | Đông | ||
Cát tinh | Diễn giải | ||
Bất Tương | Tốt các sự giỏi lành duy nhất là nhập gia hôn nhân, trừ sao xấu bệnh dịch tật. | ||
Hoạt Điệu | Tốt, nhưng gặp mặt thụ tử thì xấu | ||
Lục Hợp | Tốt mọi việc | ||
Minh tinh | Tốt phần đa việc | ||
Sát tinh | Kỵ | Ghi chú | |
Nguyệt hư ( Nguyệt Sát) | Xấu đối với việc giá bán thú, mở cửa, mở hàng | ||
Nguyệt phá | Xấu về tạo nhà cửa | ||
Quỷ khốc | Xấu cùng với tế tự, mai táng | ||
Thiên ôn | Kỵ xây dựng |
Xem phong thuỷ
Vật phẩm phong thuỷ
Facebook Fanpage
làm chủ bởi thành tựu Phong Thủy. Mtv của Blog Phong Thủy. Tổng Đài bán sản phẩm 19006883. Designed by thi công Website Đẹp