Đang bí không biết lập trình thế nào để tính lịch âm may mà có bác hướng dẫn tỉ mỉ nhiệt tình!thanks bác nhìu!hj
Thông báo
Collapse
No announcement yet.
Thuật toán tính Âm lịch từ Dương lịch dùng phương pháp tra bảng
Collapse
X
-
Chào bác pct.com
Nếu theo code của bác thì ngày 23-6-2009 DL thì tính ra là ngày 1-6-2009 AL. Nếu là tháng bình thường thì đúng nhưng bắt đầu từ ngày 23-6-2009 DL đến ngày 21-7-2009 DL sẽ nhuận 1 tháng thì âm lịch vẫn là tháng 5 chứ không phải tháng 6.
Thân chào bác.
Comment
-
Hi, mhl167 bạn đọc kỹ và hiểu code trong các bài viết trên chưa mà dám nói chắc vậy? code trên không mắc lỗi như bạn nói đâu.PCT COMPUTER
(Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)
Comment
-
Mình ko lập nhiều thông tin như chủ thớt, bảng tra của mình chỉ gồm:
- Ngày âm đầu tiên trong tháng
- Ngày âm cuối cùng trong tháng
- Tổng số ngày DL trong tháng.
Với từng này tham số là đủ rồi. CÒn việc thêm nhuận thì chỉ cần gán cụ thể cho tháng đó, năm đó là đc. Chỉ cần đồng hồ chạy đc 5 năm là ổn lắm rồi_Tuổi thọ thế là ok. Hơn hẳn mấy cái đồng hồ bán ở thị trường, chóng hỏng kinh khủng.
Add: 97 Quán Nam - Lê Chân - Hải Phòng.
Tel: 031 518648 Phone: 0904 283 505
Comment
-
Nguyên văn bởi pctcom Xem bài viếtHi, mhl167 bạn đọc kỹ và hiểu code trong các bài viết trên chưa mà dám nói chắc vậy? code trên không mắc lỗi như bạn nói đâu.
Theo code của bác thì tính như sau:
DL2009_6: DB 9,5,23,5,30
1) MOV B,NGAY ; NGAY hien tai
MOV A,N_DL_DAU_THANG ; tru di ngay duong lich tuong ung voi mung 1 am lich trong thang
CLR C
SUBB A,B
Thì ngày hiện tại là ngày 23, ngày DL đầu tháng là ngày 23 (luu trong dữ liệu DL2009_6)
Gán cờ C=0
23-23=0 suy ra cờ C=0.Tiếp theo:
2) JC SET_NGAY ;
MOV THANG_AL,T_AL_DAU_T_DL ;NGAY HT Lon HON NGAY DAU THANG AL thi Thang_al = T_AL_DAU_T_DL
MOV A,NGAY ;THI NGAY AL = NGAY AL DAU THANG + NGAY HT
MOV B,N_AL_DAU_THANG
ADD A,B
DEC A
CJNE A,#31,CAT_NGAY_AL
MOV A,#1
INC THANG_AL
Tháng AL=T_AL_DAU_T_DL = 5 (luu trong dữ liệu DL2009_6)
Ngày AL= Ngày hiện tại + N_AL_DAU_THANG -1 = 23+9-1=31
So sánh với 31 thì bằng với 31 nên gán Ngày AL=1 và tăng Tháng AL lên 1 tức là Tháng AL=5+1=6
3) CAT_NGAY_AL:
MOV NGAY_AL,A
MOV A,THANG_AL
CJNE A,#13,EXIT_SET_NGAY
MOV THANG_AL,#1
LJMP EXIT_SET_NGAY
Còn đoạn lênh này thì không ảnh hưởng đến ngày tháng AL trên và tháng AL chưa đến 13
Các bác xem mình giải thích vậy đúng chưa? Có gì góp ý thêm.
Đây là diễn đàn để chia sẻ và học hỏi kiến thức lẫn nhau nên có góp ý thì cần nên lịch sự nhé.
Thân chào bác.
Comment
-
Thực sự mình thấy code của bác ptc.com rất hay. Bản thân mình học hỏi được rất nhiều. Mình chỉ đưa ra vài ý kiến vậy thôi chứ bản thân mình không dám chỉ trích ai cả. Mong anh em diễn đàn hiểu cho. Bác chia sẻ giải thuật cho anh em diễn đàn thì biết bác rất nhiệt tình lắm rồi. Thanks bác 100 cái luôn.
Comment
-
Các bác có thể vô trang này để tra âm lịch:
Am lich - Tra cuu am lich - Chuyen doi am lich Duong lich
Comment
-
Mình nghiên cứu thì thấy cần xử lý thêm tháng mà có 2 ngày mùng 1 âm, khi đó có lẽ chúng ta cần phải chú ý trong khi lập bảng, coi ngày mùng 1 đầu tiên là tháng AL cũ, ngày mùng 1 tiếp theo mới là ngày AL đầu tiên của tháng tiếp theo.Last edited by hoangdai; 27-12-2011, 00:56.
Add: 97 Quán Nam - Lê Chân - Hải Phòng.
Tel: 031 518648 Phone: 0904 283 505
Comment
-
Nguyên văn bởi hoangdai Xem bài viếtMình nghiên cứu thì thấy cần xử lý thêm tháng mà có 2 ngày mùng 1 âm, khi đó có lẽ chúng ta cần phải chú ý trong khi lập bảng, coi ngày mùng 1 đầu tiên là tháng AL cũ, ngày mùng 1 tiếp theo mới là ngày AL đầu tiên của tháng tiếp theo.
Ngày DL 24-5-2009 có ngày AL là 1-5-2009 và ngày DL 23-6-2009 có ngày AL cũng là 1-5-2009.
Nguyên nhân vì sao? Vì nếu âm lịch không lặp lại thì sẽ đi trước dương lịch, dương lịch trong 1 tháng có tối đa 31 ngày còn âm lịch thì tối đa tới 30 ngày thôi.
Do đó các bạn lập trình nên lưu ý. Mình đã rồi nên lưu ý cho các bạn.
Chúc mọi người vui vẻ.
Thân chào.
Comment
-
Vấn đề bác đưa ra thì thuật toán của chủ thớt vẫn xử lý đc vì trong bảng tra đã chỉ rõ tháng AL đầu tháng DL và tháng AL trong tháng DL( Hơi loằng ngoằng tí). Có 1 điều thú vị nữa là sẽ xuất hiện tháng mà ko có ngày mùng 1 âm lịch ( Tháng 2(DL) năm 2014), như vậy chúng ta khi làm bảng nhớ thêm ngày cho tháng 2 này để nó có ngày mùng 1 AL nhé. Đồng hồ mình làm bán chạy rất tốt(có tham khảo thêm cách của chủ thớt để tốt hơn), mong rằng các bạn hiểu đc cách làm và có thuật toán hay cho riêng mình.
Với code C thì chỉ mất có chừng 10 dòng là đã có ngày AL và tháng AL rồi.
Add: 97 Quán Nam - Lê Chân - Hải Phòng.
Tel: 031 518648 Phone: 0904 283 505
Comment
-
Nguyên văn bởi hoangdai Xem bài viếtMình nghiên cứu thì thấy cần xử lý thêm tháng mà có 2 ngày mùng 1 âm, khi đó có lẽ chúng ta cần phải chú ý trong khi lập bảng, coi ngày mùng 1 đầu tiên là tháng AL cũ, ngày mùng 1 tiếp theo mới là ngày AL đầu tiên của tháng tiếp theo.
;ngày AL dau thang; thang AL dau thang; ngay dl dau thang AL;thang AL cua dau thang AL; so ngay DL trong thang
Với 5 biến này vấn đề trên của bạn sẽ được giải quyết thật dễ dàng.Last edited by pctcom; 11-01-2012, 13:51.PCT COMPUTER
(Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)
Comment
-
Đọc TUT này thanhks các bác rất nhiều! Tui có ý này nói ra không biết có đúng không ? Có phải tháng nào mà chỉ 1 tháng âm lịch thì cứ phán đại ngày DL đầu tháng Al > tổng số ngày trong tháng là OK bởi vì
Tính ngày Âm lịch:
Nếu (ngày Dương lịch tương ứng với ngày đầu tháng Âm lịch) bằng (ngày hiện tại) thì ngày Âm lịch bằng 1(không xảy ra trường hợp này vì giả thiết ở trên)
(N_DL_DAU_THANG = NGAY => NGAY_AL = 1)
Hoặc (ngày Dương lịch tương ứng với ngày đầu tháng Âm lịch) trừ (ngày hiện tại): (N_DL_DAU_THANG - NGAY) :Xảy ra C=0 vì luôn lớn hơn
- Nếu không có nhớ (C=0) thì ngày Âm lịch bằng (ngày Dương lịch hiện tại) cộng (ngày Âm lịch của đầu tháng Dương lịch) rồi trừ 1
(NGAY_AL = ((NGAY + N_AL_DAU_THANG)-1) Trường hợp này luôn đúng vì không liên quan gì tới ngày DL đầu tháng AL
- Nếu có nhớ (C=1) thì ngày Âm lịch hiện tại bằng (ngày Dương lịch hiện tại) trừ (ngày Dương lịch đầu tháng Âm lịch) rồi + 1
(NGAY_AL = ((NGAY - N_DL_DAU_THANG)+1)
Còn tháng AL đầu tháng AL thì bằng tháng AL đầu tháng DL là OK phải không các bác
Kiểm chứng
DL2014_2: DB 2,1,30,2,28 ;không có ngày 1AL có thể sửa lại là 2,1,31,1,28 hoặc 2,1,29,1,28
vì N_DL_DAU_THANG =29,30,31 điều >28 -->ngày âm= 12(dương)+2-1=13
Còn tháng với năm thì luôn bằng 1 -2014
Có lỗi chỗ nào các bác chỉ với nha. ThanksLast edited by tienhuypro; 12-01-2012, 01:17.
Email:
Tel: 0983.497.310
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11vg, cám ơn bác...........
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 14:37 -
-
bởi khoine9899
Em chào các anh và mọi người.
Hiện em đang có 1 con bơm màng trong thiết bị y tế đang gặp tình trạng yếu dần hoặc ngừng hoạt động sau thời gian sử dụng
Sau khi tìm hiểu về thông tin của bơm trên mạng thì em được biết...-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 11:22 -
-
Trả lời cho Cần mọi người giúp mạch tạo sóng siêu âm máy rửabởi bqviet
-
Channel: Điện tử công suất
27-11-2024, 20:26 -
-
bởi Minhdai95Em chào mọi người, e đang sửa mạch tạo sóng siêu âm cho máy rửa mà chưa có tài liệu để tham khảo sửa, mọi người cho e xin tài liệu ạ...
-
Channel: Điện tử công suất
27-11-2024, 11:37 -
-
bởi pia2k1Cùng câu hỏi và cần được giải đáp thêm ạ...
-
Channel: Hướng dẫn sử dụng diễn đàn
27-11-2024, 11:28 -
-
Trả lời cho Công thức điện tửbởi mèomướpDạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
-
Channel: Tâm tình dân kỹ thuật
26-11-2024, 21:21 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
-
Channel: Thiết bị điện tử cá nhân
26-11-2024, 20:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Ok , thanks bác đã chỉ...
-
Channel: Thiết bị điện tử cá nhân
26-11-2024, 15:06 -
-
bởi nguyendinhvanSau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !
Chập thì thay. Cháy thì tháo
Làm thì láo. Báo thì hay
May thì khoe. Rủi thì bỏ
Thành tích nhỏ. Báo thành to
Làm cho có. Báo chi li
Sai cả li. Báo...-
Channel: Tâm tình dân kỹ thuật
26-11-2024, 00:35 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
-
Channel: Thiết bị điện tử cá nhân
25-11-2024, 22:31 -
Comment