WebDict
/cgi-bin/yabb/YaBB.cgi
>> Phần mềm tính âm lịch - Developing lunar calendar software >> Thuật toán tính âm lịch
/cgi-bin/yabb/YaBB.cgi?num=1077205581

Message started by Forum Admin on 02/19/04 at 06:46:21

Title: Thuật toán tính âm lịch
Post by Forum Admin on 02/19/04 at 06:46:21

Bài viết giới thiệu cách tính âm lịch Việt Nam và các thuật toán dùng để chuyển đổi giữa ngày dương lịch và ngày âm lịch được đặt tại địa chỉ sau:

http://www.informatik.uni-leipzig.de/~duc/amlich/calrules.html

Ý kiến trao đổi về bài viết có thể được đăng tại diễn đàn này.

Title: Re: Thuật toán tính âm lịch
Post by pfiev on 02/22/04 at 01:11:40

Admin có thể cho luôn toàn bộ mã nguồn không (phần đổi dương lịch sang âm lịch thôi). Em đọc thuật toán mà không hiểu. Với NewMoonBefore(int d, int m, int y, double tz) nó trả về bộ (d1, m1, y1) thì cái này có phải là ngày âm lịch không, nếu không thì làm sao tính?

Còn cái hàm này có lẽ anh Admin viết nhầm, vì (d1, m1, y1) không thay đổi trong vòng lặp.


Code:
NewMoonBefore(int d, int m, int y, double tz)

int jdn = Gregorian2JD(d, m, y);
do {
 (d1, m1, y1) = (d, m, y);
 (d2, m2, y2) = JD2Gregorian(jdn+1); //  
 double moonAge1 = MoonAge(d1, m1, y1, tz);
 double moonAge2 = MoonAge(d2, m2, y2, tz);
 jdn = jdn - 1;
} while (moonAge2 > moonAge1.);
return (d1, m1, y1);

Title: Re: Thuật toán tính âm lịch
Post by Forum Admin on 02/22/04 at 06:43:12

Cám ơn, quả thật mình viết nhầm. Đến đây ta mới tính được ngày âm lịch thôi, còn muốn biết tháng thì phải tính xem tháng âm lịch chứa Đông chí bắt đầu lúc nào. Tháng đó là tháng 11 âm lịch, từ đó sẽ tính được tháng hiện tại.

Title: Re: Thuật toán tính âm lịch
Post by pfiev on 02/22/04 at 09:39:51

Thuật toán chi tiết cho phần sau vẫn chưa có hả anh.
Không biết làm sao xác định tháng 11 ÂL hết. Anh viết nhanh nhanh nhé.

Title: Re: Thuật toán tính âm lịch
Post by Truong Quoc Tuan on 07/27/04 at 17:12:58

La`m on co' the cho mi`nh Code da chay da thu nghiem roi, mi`nh rat can nhung la`m theo huong dan do lai chay sai, khong biet cac ban co giong minh` khong ?, vui lo`ng ai co mail ve dia chi nay minh chut : quoctuancit@yahoo.com, mi`nh rat can gap. Cam on tat ca long tot cua ban

Title: Re: Thuật toán tính âm lịch
Post by Truong Quoc Tuan on 07/27/04 at 18:05:58

Anh Amin ơi, có thể cho em phần tính dương lịch sang âm lịch được không ?, em chỉ cần có vậy thôi, rất rất cần, nhưng làm theo thuật toán của anh chạy không có được, nên em không còn nhiều thời gian để nghiên cứu, mong anh giúp cho, source đưa vào tham số d/m/y (dương lịch) -> d/m/y (âm lịch), em cảm ơn anh nhiều lắm.
Anh có thể send mail : quoctuancit@yahoo.com
Chào anh, 1 lần nữa cảm ơn anh nha !
TQT

Title: Re: Thuật toán tính âm lịch
Post by conghieuhn on 09/09/04 at 16:28:43

chào các bác.Do tôi không biết nhiều về Java nên tôi muốn hỏi có bác nào có thuật toán chuyển đổi từ dương lịch sang âm lịch bằng Visual Basic không .cho tôi xin với.Chân thành cảm ơn các bác.Xin gửi tới: conghieuvie@yahoo.co.uk.

Title: Re: Thuật toán tính âm lịch
Post by Khiếu Trung Sơn on 04/12/05 at 21:25:00

Theo tôi thì chủ yếu là thuật toán quyết định, còn ngôn ngữ nào chỉ là thứ yếu.
Bài này nói về thuật toán thì các bác nên nêu thuật toán bằng ngôn ngữ thuật toán. Không nên dùgn một ngôn ngữ mà nói nó. Như vậy thì những ai chưa học ngôn ngữ đó không thể hiểu được. Cám ơn nhiều.

Title: Re: Thuật toán tính âm lịch
Post by honglu on 04/13/05 at 15:17:49

I've found some conversion dates which are different between Ho Ngoc Duc's calendar conversion program (both online and offline) and those of LunarCal and online programs (through thuongviet.com, etc.)  I've so far verified the outputs from Duc's program with the LunarCal program for years between 2005 and 2060 and all of them match except for the followings.  Note that each lunar date shown below represent the LAST date of that lunar month.
   Duc's program
      Gregorian 27-09-2057        Lunar 29-08-2057
      Gregorian 27-10-2057        Lunar 30-09-2057

   LunarCal and some online converters
      Gregorian 28-09-2057        Lunar 30-08-2057
      Gregorian 27-10-2057        Lunar 29-09-2057

As a result, the lunar dates for the period between Gregorian 28-09-2057 and 27-10-2057 are different.  I've used both GMT+7 and +8 in Duc's program and the above differences exist in both GMTs.

I'll verify other years and report any difference in the above 2 programs.

WebDict » Powered by YaBB 2.1!
YaBB © 2000-2005. All Rights Reserved.