PDA

View Full Version : [Q] Đổi ngày âm lịch <-> dương lịch



baotrung
09-01-2003, 08:05
Các members ơi!

Tôi đang cần một giải thuật hay phương thức nào để đổi ngày
dương lịch sang âm lịch và ngược lại, bạn nào biết chỉ tôi với.

Thanks nhiều lắm.

Nicky
09-01-2003, 19:41
Hình như trong quyển sách lập trình Access của Ông Văn Thông có nói cái giải thuật đó (ngôn ngữ Access nhưng không có gì khác với VB đâu).
Tìm thử xem sao nhé.

baotrung
10-01-2003, 08:19
Giá như có tài liệu trên mạng luôn thì hay wá, chứ ra tiệm thì biết còn hay không, sách tên gì... Nếu bạn nào đã từng program thì cho mình xin giải thuật.

Nicky
10-01-2003, 21:18
Ok minh sẽ Post lên cho nhưng nó chỉ đổi năm dương lịch sang âm lịch thui ..

baotrung
16-01-2003, 11:23
Hi Nicky!

Mình chờ bạn post lên lău wá, vậy khi nào mới Post lên cho mình
dây. Cảm ơn bạn trước nhé.

White_Rose
17-01-2003, 02:19
Hic, tui cũng chờ dài cả cổ ra đây :((
Lên mạng tìm được một cái viết = C nhưng nó chỉ cho đổi các năm từ 1->~700. tức mình delete luôn.

quyda
17-01-2003, 16:16
Thử tìm của mấy cha viết ct tử vi xem!

Nicky
17-01-2003, 19:35
aaaaaaa...I'm Sorry !
Quyển sách đó Nicky tìm không ra nhưng vẫn còn nhớ một chút.
Nicky không hiểu về năm âm lịch lém, Can Chi gì đó tùm lum nhưng mà như thế này.
Can thì 10 năm sẽ lặp lại một lần nên muốn tìm Can hãy lấy năm đó chia cho 10 được số dư là x.
Chi thì 12 năm mới lặp lại một lần do đó lấy năm cần tính chia cho 12 được số dư là y.
sau đó đem hai số dư này ứng với Can hoặc Chi gì đó.
Ví dụ năm nay là Quý Mùi.
2003 mod 10 = 3 do đó 3 ứng với Quý, 4 ứng với ... cứ thế tiếp tục vì Nicky không biết sau Quý là gì cả..he..he..
2003 mod 12 = 11 do đó 11 ứng với Mùi sau đó cứ thế tiếp tục.
Thuật toán là như vậy hi vọng mọi người làm được, xin lỗi vì hình như Nicky bị mất gốc rồi chẳng biết gì về âm lịch..

baotrung
18-01-2003, 12:59
Thanks Nicky!

Cách tính không đơn giản như vậy đâu, vì âm lịch có 29 or 30 ngày trong tháng (khác dương lịch tới 31 ngày) và theo chu kỳ nào đó thì 1 năm có đến 2 tháng nhuận , mà những tháng nhuận này thì không cố định, .... do vậy tìm được qui luật để đổi phải nổ đom đóm. Bởi vậy ai giúp giải quyết được vấn đề này tui sẽ mời đi uống ca fe KOPIKO.

White_Rose
19-01-2003, 01:43
Hic, đổi năm sang năm âm lịch thì hầu như ai cũng làm được. Mình cần là cần đổi ngày kìa :(((

Lighting_dragon
19-01-2003, 01:50
Mời bác White_Rose ra tay.

quaitieutu
19-01-2003, 16:01
Các bạn thử liên hệi với thầy Tăng Vĩnh Tài bên Vovisoft hoặc webmaster của vietshare.com.Hai vị tiền bối này có lẽ đã làm xong cái này rồi.Vấn đề này bên đó đã thấy nói đến từ năm ngoài rồi.Chắc giờ nãy đã có code trong Vb rùi.Chúc thành công

lazy-programmer
20-01-2003, 16:32
Một phương pháp "thực tế" nhất
Tôi đã theo dõi khá nhiều bài viết về cách đổi Âm Lịch - Dương Lịch nhưng không có bài viết nào chi tiết và cụ thể cả. Lùng sục trên Internet thì có tài liệu nghiên cứu về vần đề này nhưng cuối cùng phát hiện ra đây là vấn đề hết sức phức tạp (thậm chí ngay Lịch Trung Quốc cũng còn nhiều tranh cãi). Đa số các chương trình chuyển đổi âm-dương lịch đều tra theo dạng bảng thay vì làm một thuật toán chung. Ngoài ra lịch Việt Nam lại hơi lệch với lịch Trung Quốc (kg rõ lý do lắm).

Vậy nên theo tôi các bạn nên lập một Database list các năm (VD: từ 1900 - 2050 theo cuốn "Lịch Vạn Niên") và mỗi tháng bạn so khớp ngày đầu tháng Dương Lịch với ngày tháng Âm Lịch và từ đó tính ra các ngày khác. Như vậy mỗi năm bạn cần 12 records (ứng với 12 tháng), 150 năm cần 1800 records (kg phải quá nhiều, chỉ cần 2-3 ngày nhập liệu). Và một giải thuật rất đơn giản để tính ra ngày. Bạn cũng có thể thêm các dữ liệu khác vào database ấy như Can-Chi của ngày, tháng... để có một lịch hoàn chỉnh.

Mong các bạn đóng góp thêm. Thanks

baotrung
21-01-2003, 09:02
hi lazy_program

Đúng là bạn lười lập trình nên đề ra phương thức cực khổ
như vậy. input data rồi lookup thì còn nói làm gì?
Anyway thank you.

lazy-programmer
21-01-2003, 11:23
Chà, bạn nói chính xác rồi đó. Đấy là phương châm của mình mà. Cái gì khó quá thì nên đi vòng để đạt tới mục tiêu trước, còn hơn mất thời gian để cuối cùng cứ lẩn quẩn với những giải thuật mà có thể bạn sẽ nhận thấy là "thà theo cách kia còn hơn" (hoặc vì nó quá phức tạp và tốn thời gian, hoặc không thể ứng dụng đc vì quá chậm). Vấn đề là deadline mà bạn đặt ra cho ctrình của mình phải ra đời.

Bạn vào website này:

http://emr.cs.iit.edu/home/reingold/calendar-book/second-edition/index.html

Ở đó có tất cả các nghiên cứu về lịch Chinese, trong đó có một Applet đổi Âm-Dương lịch và nếu bạn xem source code thì bạn cũng thấy họ tra theo dạng bảng vì theo họ giải thuật quá phức tạp. Nếu như những người chuyên nghiên cứu về vấn đề này còn chọn cách tiếp cận như vậy thì chúng ta có nên đi theo con đường khó hơn chăng?

However, nếu bạn tìm được một giải thuật tốt, xin post lên cho mọi người tham khảo. Thanks.

baotrung
21-01-2003, 18:20
Thanks for your link, Lazy_programmer

Mình đã load về cái source code bằng JAVA, xem wa thấy giải thuật wá phức tộp, họ không dùng cách tra bảng đâu, mình post len đây để mọi người cùng ngâm kứu và chuyển ngữ sang VB.

Mong mọi người cộng tác. Tks

mel
21-01-2003, 18:21
lazy-programmer nói hay ghê luôn, đọc mãi không thấy chán.

White_Rose
22-01-2003, 00:03
:) Hình như không có tra bảng thật, Applet thì tra bảng cái gì nữa :D
Để vài hôm nữa WR translate ra VB xem sao. Nếu được thì baotrung nhớ đãi cafe nhá:Dlol

White_Rose
22-01-2003, 05:00
// Referenced classes of package calendars:
// MonthDayYear, AltCalendar, ArrayEnum, Gregorian,
// Moment
//......
public static final long EPOCH = (new Gregorian(2, 15, -2636)).toRD();
//......Hic, thiếu nhiều class thế này thì chịu, chẳng tài nào mà convert được đâu.
Bạn lấy file đó ở đâu thì lấy hết luôn đi. Cái này chỉ là một class trong cả đống class của cái Applet đó thôi.

baotrung
22-01-2003, 08:49
Hi WR

Thật thiếu sót, lấy tiếp gởi cho you đây, muốn convert sang Vb không những phải giỏi Java mà còn tinh thông thiên văn nữa
chúc you thành công, đừng nản chí nhé.

Cafe KOPIKO luôn sẵn sàng chờ

lol

QuynhGiao
24-01-2003, 14:54
Các đồng chí ơi !
Hôm nọ em đọc đc trong 1 quyển gì đấy có nói về cách đủi ÂL->DL
đấy.
Để qua Tết em lên Hn Scan trang đó ru`i post lên đây.
Vụ này em đã đăng ký nghen. Không ai đc tranh đâu nhé.
Ai mời Café nhớ giữ lời nghen..

lazy-programmer
27-01-2003, 17:31
:eek: Thật là một giải thuật kinh khủng... Có thể chuyển sang VB nhưng khó mà hiểu hết được trừ phi bạn theo một khóa về Thiên Văn Học.

Pharaooon
29-01-2003, 21:48
Sao khó thế nhỉ?Sao mọi người không tạo một lịch vạn niên cho âm lịch ,y như trong Win ấy mờ(chỉ ra tháng mấy có mấy ngày...rồi có hàm add chẳng hạn sẽ cộng thêm vào một ngày âm lịch một gia số(ví dụ như 100 ngày)rồi trả về một ngày khác tháng khác (cũng âm lịch luôn,tất nhiên)
Sau đó chỉ đơn giản là chọn một mốc chung cho Âm và Dương lịch chỉ định ngày mấy tháng mấy trong âm lịch trùng với ngày mấy tháng mấy trong dương lịch===>Okie

Nicky
30-01-2003, 16:17
hahhaha
Thôi bỏ đi các bác....:)phải theo học bác Khổng Minh về thuật thiên văn thì may ra, chúng ta cũng không hiểu nó như thế nào thì làm sao viết được....

lazy-programmer
06-02-2003, 09:17
Thôi nghe bàn ra, tán vào chán quá. Mình quyết định bỏ tính lười biếng bẩm sinh để ''động chân, động tay" viết một .dll bằng VB.Net để đổi từ DL-> AL (từ 1900 - 2100). Mình nghĩ cũng đủ cho phần lớn các ứng dụng hiện nay. Ưu điểm của lib này là:

+ Chạy cực nhanh, nhỏ gọn.
+ Có chức năng đổi từ ngày DL-AL theo Can-Chi của năm, tháng, ngày và giờ.
+Có vài hàm hỗ trợ các bạn muốn làm lịch Dương Âm.

Do không có nhiều thời gian nên tôi phải hẹn các bạn 1-2 tuần nữa.

Pharaooon
06-02-2003, 11:26
Người ta đang bàn về đổi AL->DL mà,Đổi dương sang âm có gì là khó chỉ việc chia ra lấy Mod chứ mấy

lazy-programmer
06-02-2003, 11:43
Bạn nên tìm hiểu thêm trước khi bình luận. Nếu mọi chuyện đơn giản như vậy thì các bạn trên diễn đàn này (mà tôi tin là có rất nhiều người giỏi) không phải tốn "giấy mực" nhiều như vậy.

White_Rose
06-02-2003, 11:51
:) Mình cũng đang làm một class như vậy trong C# (vừa mới bắt đầu học mà).

huyle_khongminh
22-12-2005, 17:58
bác nào có code chuyển đổi dương lịch => âm lịch (chuyển ngày tháng DL =>AL chứ không phải là chuyển năm) cho mình xin với.
Mình tìm mãi mà chưa thấy

tumickey
22-12-2005, 18:14
sao kô sài hàng vn chất lượng cao ??
http://www.informatik.uni-leipzig.de/~duc/amlich

huyle_khongminh
22-12-2005, 18:38
cảm ơm tumickey mhưng tiếc quá mình không biết tí gì về JavaScript bạn nào có code vb không

tumickey
22-12-2005, 18:45
bạn có thể coi thuật toán mà làm :) trong đó có hết đó
http://www.informatik.uni-leipzig.de/~duc/amlich/calrules.html
NGoài viết bằng js còn viết bằng java và php nữa :) .

themummy
27-12-2005, 14:45
Quá hay ~ quá khó! :no:

minhpn
04-01-2006, 09:10
Tôi có 01 đoạn về ngày tháng năm âm, dương lịch = VB.NET
Chọn tháng ==> Thứ ; Ngày dương lịch, Ngày âm lịch (Nhâm Thìn chẳng hạn)
Tháng âm lịch (Kỷ Sửu chẳng hạn), Tiết khí.

Bác nào tham khảo mail cho tôi nhé.

thuongall
04-01-2006, 10:35
Bạn tham khảo tại đây: http://www.forum.caulacbovb.com/viewtopic.php?t=1681

Chúc vui!

zigzaglk
07-05-2009, 16:37
Tumickey ơi cho mình hỏi
-mấy cái thông số của hàm chuyển đổi từ dd/mm/yy sang Julius và ngược lại làm sao có được vậy

trieuantontrieu
07-06-2009, 07:25
mình có một giải thuật đổi dương lịch ra âm lịch và ngược lại nhưng lâu qua để đâu không kiếm thấy bữa nào kiếm thấy minh post lên ha

maihuuton
01-03-2010, 23:14
Thật không dể ti nào !
Hic

latdat089
01-11-2013, 10:33
Thanks for your link, Lazy_programmer

Mình đã load về cái source code bằng JAVA, xem wa thấy giải thuật wá phức tộp, họ không dùng cách tra bảng đâu, mình post len đây để mọi người cùng ngâm kứu và chuyển ngữ sang VB.

Mong mọi người cộng tác. Tks
cho em các source code bằng java với