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
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Thuật toán tính Âm lịch từ Dương lịch dùng phương pháp tra bảng

    Trong diễn đàn đã có rất nhiều bạn đã tự làm cho mình mạch đồng hồ ứng dụng IC thời gian thực, cho phép hiện thị thời gian và ngày tháng năm Dương lịch. Tuy nhiên rất ít người thành công khi chuyển qua làm lịch vạn niên có cả ngày tháng Âm lịch. Cái khó ở đây là cách chuyển đổi từ Dương lịch sang Âm lịch.




    Thực sự ra với những bạn đã từng sử dụng phương pháp tra bảng để so sánh thì thuật toán này không quá khó, cái hay ở đây là làm sao bảng tra phải có dung lượng thật nhỏ để toàn bộ code gói gọn trong 4kb của 89c51.

    Tôi sẽ giới thiệu cho các bạn ở các bài viết sau code chuyển đổi Dương lịch thành Âm lịch dùng bảng tra với 60 byte cho 1 năm.
    Last edited by pctcom; 18-07-2011, 23:10.
    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)

  • #2
    Tiếp tục post đi bạn
    Đối với Tôi Đam mê là yếu tố không thể thiếu để quyết định sự Thành Công ...!
    Gmail: -Mobile: 0989.194.472

    Comment


    • #3
      Cách tính ngày Âm lịch theo phương pháp tra bảng tra bảng:

      Công thức tính ngày Âm lịch theo phương pháp tra bảng tra bảng:


      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
      (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) :

      - 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)
      - 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)


      ;===============================================

      Tính tháng Âm lịch :

      Bằng cách lấy (ngày Dương lịch tương ứng với đầu tháng Âm lịch trong tháng) trừ (ngày hiện tại)
      (N_DL_DAU_THANG - NGAY)

      - Nếu không có nhớ (C=0) thì tháng Âm lịch hiện tại bằng tháng Âm lịch của đầu tháng Dương lịch
      (THANG_AL = (T_AL_DAU_THANG)
      - Nếu có nhớ (C=1) thì tháng Âm lịch hiện tại bằng tháng Âm lịch của ngày đầu tháng Âm lịch
      (THANG_AL = T_AL_DAU_T_AL)

      ;===============================================

      Tính năm Âm lịch:

      Bằng cách lấy (tháng Dương lịch) trừ cho (tháng Âm lịch) (THANG - THANG_AL)

      - Nếu không có nhớ (C=0) thì năm Âm lịch sẽ bằng năm Dương lịch
      (NAM_AL=NAM)
      - Nếu có nhớ (C=1) thì năm Âm lịch hiện tại bằng năm Dương lịch trừ 1
      (NAM_AL = NAM - 1)

      ;===============================================

      Trong đó:

      - NGAY = ngày Dương lịch.(có sẵn trong IC thời gian thực)
      - NGAY_AL = ngày Âm lịch.(kết quả)
      - N_DL_DAU_THANG = ngày Dương lịch đầu tháng Âm lịch.(bảng tra)
      - N_AL_DAU_THANG = ngày Âm lịch của đầu tháng Dương lịch.(bảng tra)
      - THANG = tháng Dương lịch. (có sẵn trong IC thời gian thực)
      - THANG_AL = tháng Âm lịch.(kết quả)
      - T_AL_DAU_THANG = tháng Âm lịch đầu tháng Dương lịch. (bảng tra)
      - T_AL_DAU_T_AL = tháng Âm lịch đầu tháng Âm lịch.(bảng tra)
      - NAM = năm Dương lịch. (có sẵn trong IC thời gian thực)
      - NAM_AL = năm Âm lịch.(kết quả)

      Theo các công thức trên ta đã có 4 biến cần thiết trong bảng tra tương ứng cho mỗi tháng. Nhưng chưa đủ ở đây còn thiếu 1 biến, biến thứ 5. Vậy theo bạn ý biến này là gì ..... ???.
      Last edited by pctcom; 19-07-2011, 21:59.
      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


      • #4
        Để tiện cho việc so sánh và chỉnh ngày tháng, Biến thứ 5 cần thiết phải có là tổng số ngày Dương lịch trong tháng DL.

        Bảng dưới đây được tạo ra cho 5 năm, trích từ Lịch "Vietnamese Lunar calendar".


        Với các biến được xếp theo thứ tự như sau:

        ngày AL đầu tháng DL; tháng AL đầu tháng DL; ngày DL của đầu tháng AL;tháng AL của đầu tháng AL; tổng số ngày DL trong tháng.

        DL2009:
        DL2009_1: DB 6,12,26,1,31 ; Tháng 1 năm 2009
        DL2009_2: DB 7,1,25,2,28 ; ; Tháng 2 năm 2009
        DL2009_3: DB 5,2,26,3,31
        DL2009_4: DB 7,3,25,4,30
        DL2009_5: DB 7,4,24,5,31
        DL2009_6: DB 9,5,23,5,30
        DL2009_7: DB 9,5,22,6,31
        DL2009_8: DB 11,6,20,7,31
        DL2009_9: DB 13,7,19,8,30
        DL2009_10: DB 13,8,18,9,31
        DL2009_11: DB 15,9,17,10,30
        DL2009_12: DB 15,10,16,11,31

        DL2010:
        DL2010_1: DB 17,11,15,12,31 ; Tháng 1 năm 2010
        DL2010_2: DB 18,12,14,1,28
        DL2010_3: DB 16,1,16,2,31
        DL2010_4: DB 17,2,14,3,30
        DL2010_5: DB 18,3,14,4,31
        DL2010_6: DB 19,4,12,5,30
        DL2010_7: DB 20,5,12,6,31
        DL2010_8: DB 21,6,10,7,31
        DL2010_9: DB 23,7,8,8,30
        DL2010_10: DB 24,8,8,9,31
        DL2010_11: DB 25,9,6,10,30
        DL2010_12: DB 26,10,6,11,31

        DL2011:
        DL2011_1: DB 27,11,4,12,31
        DL2011_2: DB 19,12,3,1,28
        DL2011_3: DB 27,1,5,2,31
        DL2011_4: DB 28,2,3,3,30
        DL2011_5: DB 29,3,3,4,31
        DL2011_6: DB 30,4,2,5,30
        DL2011_7: DB 1,6,31,7,31
        DL2011_8: DB 2,7,29,8,31
        DL2011_9: DB 4,8,27,9,30
        DL2011_10: DB 5,9,27,10,31
        DL2011_11: DB 6,10,25,11,30
        DL2011_12: DB 7,11,25,12,31

        DL2012:
        DL2012_1: DB 8,12,23,1,31
        DL2012_2: DB 10,1,22,2,29
        DL2012_3: DB 9,2,22,3,31
        DL2012_4: DB 11,3,21,4,30
        DL2012_5: DB 11,4,21,4,31
        DL2012_6: DB 12,4,19,5,30
        DL2012_7: DB 13,5,19,6,30
        DL2012_8: DB 14,6,17,7,31
        DL2012_9: DB 16,7,16,8,30
        DL2012_10: DB 16,8,15,9,31
        DL2012_11: DB 18,9,14,10,30
        DL2012_12: DB 18,10,13,11,31

        DL2013:
        DL2013_1: DB 20,11,12,12,31
        DL2013_2: DB 21,12,10,1,28
        DL2013_3: DB 20,1,12,2,31
        DL2013_4: DB 21,2,10,3,30
        DL2013_5: DB 22,3,10,4,31
        DL2013_6: DB 23,4,8,5,30
        DL2013_7: DB 24,5,8,6,31
        DL2013_8: DB 25,6,7,7,31
        DL2013_9: DB 26,7,5,8,30
        DL2013_10: DB 27,8,5,9,31
        DL2013_11: DB 28,9,3,10,30
        DL2013_12: DB 29,10,3,11,31
        ;==================================

        Tới đây chúng ta có thể dễ dàng tạo code Lịch Vạn Niên Âm lịch cho 89C51 hoặc cho các loại Vi điều khiển khác từ các công thức trên.

        Các bạn có thể tạo nội dung bảng tra lên đến vài chục năm mà vẫn không sợ hết dung lượng bộ nhớ của VXL
        Last edited by pctcom; 20-07-2011, 20:27.
        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


        • #5
          từ năm 2014 trở đi cần bảng tra nữa chứ, hay bảng kia sẽ đủ cho các năm sau hay là chu kì cần khoảng bao nhiêu năm thì lặp lại vậy?
          Đối với Tôi Đam mê là yếu tố không thể thiếu để quyết định sự Thành Công ...!
          Gmail: -Mobile: 0989.194.472

          Comment


          • #6
            Nguyên văn bởi thiennv0109 Xem bài viết
            từ năm 2014 trở đi cần bảng tra nữa chứ, hay bảng kia sẽ đủ cho các năm sau hay là chu kì cần khoảng bao nhiêu năm thì lặp lại vậy?
            Bảng 5 năm trên chỉ là ví dụ. Muốn số năm nhiều hơn bạn phải tạo thêm cho bảng.

            Theo cách tính "Can, Chi" thì chu kỳ của lịch Âm so với Lịch Dương là 19 năm, tuy nhiên nó vẫn có 1 số trường hợp đặc biệt.
            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


            • #7
              Chúng ta đã phân tích và tìm ra cách để biến đổi ngày Âm-Dương, còn code thực tế thì sao?

              Dưới đây là đoạn code ASM mẫu để đổi thời gian từ Dương lịch sang Âm lịch viết cho 89C52:

              PHP Code:
              ;===============================================================
              ;
              CLOCK CONTROLLER 8951     DAT28-04-2005
              write by PHAM-CHINH-TAM     MAILphamchinhtam@gmail.com      TEL:0918227077
              ;===============================================================
              ;=================================
              DOI_DL_AL:  ;Code đổi Dương lịch sang Âm lịch
              ;=================================
                  
              MOV    A,NAM            CHON NAM
                  CJNE    A
              ,#9,NAM2
                  
              MOV     DPTR,#DL2009
                  
              LJMP    TRA_THEO_THANG
              NAM2
              :
                  
              CJNE    A,#10,NAM3
                  
              MOV     DPTR,#DL2010
                  
              LJMP    TRA_THEO_THANG
              NAM3
              :
                  
              CJNE    A,#11,NAM4
                  
              MOV     DPTR,#DL2011
                  
              LJMP    TRA_THEO_THANG
              NAM4
              :
                  
              CJNE    A,#12,NAM5
                  
              MOV     DPTR,#DL2012
                  
              LJMP    TRA_THEO_THANG
              NAM5
              :
                  
              CJNE    A,#13,NAM6
                  
              MOV     DPTR,#DL2013
                  
              LJMP    TRA_THEO_THANG
              NAM6
              :
                  
              CJNE    A,#14,NAM7
                  
              MOV     DPTR,#DL2014
                  
              LJMP    TRA_THEO_THANG
              NAM7
              :
                  
              CJNE    A,#15,NAM8
                  
              MOV     DPTR,#DL2015
                  
              LJMP    TRA_THEO_THANG
              NAM8
              :
                  
              CJNE    A,#16,NAM9
                  
              MOV     DPTR,#DL2016
                  
              LJMP    TRA_THEO_THANG
              NAM9
              :
                  
              CJNE    A,#17,NAM10
                  
              MOV     DPTR,#DL2017
                  
              LJMP    TRA_THEO_THANG
              NAM10
              :
                  
              CJNE    A,#18,NAM11
                  
              MOV     DPTR,#DL2018
                  
              LJMP    TRA_THEO_THANG
              NAM11
              :
                  
              MOV     DPTR,#DL2019
              ;===========================================
              TRA_THEO_THANG:    
                  
              MOV        A,THANG            CHON THANG
                  CJNE    A
              ,#1,THANG2
                  
              MOV     R6,#0            ; VI TRI DU LIEU TUONG UNG THEO THANG TRONG BANG
                  
              LJMP    TRA_BANG
              THANG2
              :
                  
              CJNE    A,#2,THANG3
                  
              MOV     R6,#5
                  
              LJMP    TRA_BANG
              THANG3
              :
                  
              CJNE    A,#3,THANG4
                  
              MOV     R6,#10
                  
              LJMP    TRA_BANG
              THANG4
              :
                  
              CJNE    A,#4,THANG5
                  
              MOV     R6,#15
                  
              LJMP    TRA_BANG
              THANG5
              :
                  
              CJNE    A,#5,THANG6
                  
              MOV     R6,#20
                  
              LJMP    TRA_BANG
              THANG6
              :
                  
              CJNE    A,#6,THANG7
                  
              MOV     R6,#25
                  
              LJMP    TRA_BANG
              THANG7
              :
                  
              CJNE    A,#7,THANG8
                  
              MOV     R6,#30
                  
              LJMP    TRA_BANG
              THANG8
              :
                  
              CJNE    A,#8,THANG9
                  
              MOV     R6,#35
                  
              LJMP    TRA_BANG
              THANG9
              :
                  
              CJNE    A,#9,THANG10
                  
              MOV     R6,#40
                  
              LJMP    TRA_BANG
              THANG10
              :
                  
              CJNE    A,#10,THANG11
                  
              MOV     R6,#45
                  
              LJMP    TRA_BANG
              THANG11
              :
                  
              CJNE    A,#11,THANG12
                  
              MOV     R6,#50
                  
              LJMP    TRA_BANG
              THANG12
              :
                  
              MOV     R6,#55
              ;==========================================================
              TRA_BANG:
                  
              MOV        A,R6
                  MOVC    A
              ,@A+DPTR
                  MOV        N_AL_DAU_THANG
              ,A    ;CAT VAONGAY AL DAU THANG DL
                  INC        R6
                  MOV        A
              ,R6
                  MOVC    A
              ,@A+DPTR
                  MOV        T_AL_DAU_T_DL
              ,A    CAT VAOTHANG AL DAU THANG DL
                  INC        R6
                  MOV        A
              ,R6
                  MOVC    A
              ,@A+DPTR
                  MOV        N_DL_DAU_THANG
              ,A    CAT VAONGAY DL DAU THANG AL
                  INC        R6
                  MOV        A
              ,R6
                  MOVC    A
              ,@A+DPTR
                  MOV        T_AL_DAU_T_AL
              ,A        CAT VAOTHANG AL DAU THANG AM LICH
                  INC        R6
                  MOV        A
              ,R6
                  MOVC    A
              ,@A+DPTR
                  MOV        N_TRONG_THANG
              ,A        CAT VAOSO NGAY TRONG THANG
                  
              ;==========================================================
                  
              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
                  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
              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
              SET_NGAY
              :                                ;NGAY HT LON HON NGAY DAU THANG AL
                                                      
              ;THI THANG AL THANG AM LICH DAU THANG AL
                  MOV        THANG_AL
              ,T_AL_DAU_T_AL
                  MOV        A
              ,NGAY                        ;VA NGAY AL NGAY NGAY DL CUA DAU THANG AL 1
                  MOV        B
              ,N_DL_DAU_THANG
                  SUBB    A
              ,B
                  INC        A
                  INC        A
                  MOV        NGAY_AL
              ,A
              EXIT_SET_NGAY
              :
              TINH_NAM_AL:                            ;Tinh nam AL
                  MOV        A
              ,THANG    
                  MOV        B
              ,THANG_AL
                  CLR        C
                  SUBB    A
              ,B
                  JC        SET_NAM
                  MOV        A
              ,NAM
                  MOV        NAM_AL
              ,A
              RET    
              SET_NAM
              :    
                  
              MOV        A,NAM
                  DEC        A
                  MOV        NAM_AL
              ,A
              RET


              ;=====================================================================================================
              BANG TRA AM LICH :             
              ;=====================================

              BANG:                                                  
              DL2009:  
              DL2009_1:    DB     6,12,26,1,31 ;ngày AL dau thangthang AL dau thangngay dl dau thang AL;thang AL cua dau thang ALso ngay DL trong thang
              DL2009_2
              :    DB    7,1,25,2,28
              DL2009_3
              DB  5,2,26,3,31
              DL2009_4
              :    DB    7,3,25,4,30        
              DL2009_5
              :    DB    7,4,24,5,31
              DL2009_6
              :    DB    9,5,23,5,30    
              DL2009_7
              :    DB    9,5,22,6,31
              DL2009_8
              :    DB    11,6,20,7,31
              DL2009_9
              :    DB    13,7,19,8,30
              DL2009_10
              :DB    13,8,18,9,31
              DL2009_11
              :DB    15,9,17,10,30
              DL2009_12
              :DB    15,10,16,11,31
              DL2010
              :
              DL2010_1:    DB    17,11,15,12,31
              DL2010_2
              :    DB    18,12,14,1,28
              DL2010_3
              DB    16,1,16,2,31    
              DL2010_4
              :    DB    17,2,14,3,30
              DL2010_5
              :    DB    18,3,14,4,31
              DL2010_6
              :    DB    19,4,12,5,30
              DL2010_7
              DB    20,5,12,6,31
              DL2010_8
              DB    21,6,10,7,31
              DL2010_9
              :    DB    23,7,8,8,30
              DL2010_10
              :DB    24,8,8,9,31
              DL2010_11
              :DB    25,9,6,10,30
              DL2010_12
              :DB    26,10,6,11,31
              DL2011
              :
              DL2011_1:    DB    27,11,4,12,31
              DL2011_2
              :    DB    19,12,3,1,28
              DL2011_3
              :    DB    27,1,5,2,31
              DL2011_4
              :    DB    28,2,3,3,30
              DL2011_5
              :    DB    29,3,3,4,31
              DL2011_6
              :    DB    30,4,2,5,30
              DL2011_7
              :    DB    1,6,31,7,31
              DL2011_8
              :    DB    2,7,29,8,31
              DL2011_9
              :    DB    4,8,27,9,30
              DL2011_10
              :DB    5,9,27,10,31
              DL2011_11
              :DB    6,10,25,11,30
              DL2011_12
              :DB    7,11,25,12,31

              DL2012
              :        
              DL2012_1:    DB    8,12,23,1,31
              DL2012_2
              :    DB    10,1,22,2,29
              DL2012_3
              :    DB    9,2,22,3,31
              DL2012_4
              :    DB    11,3,21,4,30
              DL2012_5
              :    DB    11,4,21,4,31
              DL2012_6
              :    DB    12,4,19,5,30
              DL2012_7
              :    DB    13,5,19,6,30
              DL2012_8
              :    DB    14,6,17,7,31
              DL2012_9
              :    DB    16,7,16,8,30
              DL2012_10
              :DB    16,8,15,9,31
              DL2012_11
              :DB    18,9,14,10,30
              DL2012_12
              :DB    18,10,13,11,31

              DL2013
              :        
              DL2013_1:    DB    20,11,12,12,31
              DL2013_2
              :    DB    21,12,10,1,28
              DL2013_3
              :    DB    20,1,12,2,31
              DL2013_4
              :    DB    21,2,10,3,30
              DL2013_5
              :    DB    22,3,10,4,31
              DL2013_6
              :    DB    23,4,8,5,30
              DL2013_7
              :    DB    24,5,8,6,31
              DL2013_8
              :    DB    25,6,7,7,31
              DL2013_9
              :    DB    26,7,5,8,30
              DL2013_10
              :DB    27,8,5,9,31
              DL2013_11
              :DB    28,9,3,10,30
              DL2013_12
              :DB    29,10,3,11,31

              DL2014
              :             ;ngày AL dau thangthang AL dau thangngay dl dau thang AL;thang AL cua dau thang ALso ngay DL trong thang
              DL2014_1
              :    DB    1,12,31,1,31
              DL2014_2
              :    DB    2,1,30,2,28    ;KHONG CO NAY 1AL
              DL2014_3
              :    DB    1,2,31,3,31
              DL2014_4
              :    DB    2,3,29,4,30
              DL2014_5
              :    DB    3,4,29,5,31
              DL2014_6
              :    DB    4,5,27,6,30
              DL2014_7
              :    DB    5,6,27,7,31
              DL2014_8
              :    DB    6,7,25,8,31
              DL2014_9
              :    DB    8,8,24,9,30
              DL2014_10
              :DB    8,9,24,9,31
              DL2014_11
              :DB    9,9,22,10,30
              DL2014_12
              :DB    10,10,22,11,31

              DL2015
              :        
              DL2015_1:    DB    11,11,20,12,31
              DL2015_2
              :    DB    13,12,19,1,28
              DL2015_3
              :    DB    11,1,20,2,31
              DL2015_4
              :    DB    13,2,19,3,30
              DL2015_5
              :    DB    13,3,18,4,31
              DL2015_6
              :    DB    15,4,16,5,30
              DL2015_7
              :    DB    16,5,16,6,31
              DL2015_8
              :    DB    17,6,14,7,31
              DL2015_9
              :    DB    19,7,13,8,30
              DL2015_10
              :DB    19,8,13,9,31
              DL2015_11
              :DB    20,9,12,10,30
              DL2015_12
              :DB    20,10,11,11,31

              DL2016
              :        
              DL2016_1:    DB  22,11,10,12,31
              DL2016_2
              :    DB    23,12,8,1,29
              DL2016_3
              :    DB    23,1,9,2,31
              DL2016_4
              :    DB    24,2,7,3,30
              DL2016_5
              :    DB    25,3,7,4,31
              DL2016_6
              :    DB    26,4,5,5,30
              DL2016_7
              :    DB    27,5,4,6,31
              DL2016_8
              :    DB    29,6,3,7,31
              DL2016_9
              :    DB    1,8,31,9,30    ;KHONG CO NAY 1AL
              DL2016_10
              :DB    1,9,31,10,31
              DL2016_11
              :DB    2,10,29,11,30
              DL2016_12
              :DB    3,11,29,12,31

              DL2017
              :        
              DL2017_1:    DB  4,12,28,1,31
              DL2017_2
              :    DB    5,1,26,2,28
              DL2017_3
              :    DB    4,2,28,3,31
              DL2017_4
              :    DB    5,3,26,4,30
              DL2017_5
              :    DB    6,4,26,5,31
              DL2017_6
              :    DB    7,5,24,6,30
              DL2017_7
              :    DB    8,6,23,6,31
              DL2017_8
              :    DB    10,6,22,7,31
              DL2017_9
              :    DB    11,7,20,8,30
              DL2017_10
              :DB    12,8,20,9,31
              DL2017_11
              :DB    13,9,18,10,30
              DL2017_12
              :DB    14,10,18,11,31

              DL2018
              :        
              DL2018_1:    DB  15,11,17,12,31
              DL2018_2
              :    DB    16,12,16,1,28
              DL2018_3
              :    DB    14,1,17,2,31
              DL2018_4
              :    DB    16,2,16,3,30
              DL2018_5
              :    DB    16,3,15,4,31
              DL2018_6
              :    DB    18,4,14,5,30
              DL2018_7
              :    DB    18,5,13,6,31
              DL2018_8
              :    DB    20,6,11,7,31
              DL2018_9
              :    DB    22,7,10,8,30
              DL2018_10
              :DB    22,8,9,9,31
              DL2018_11
              :DB    24,9,7,10,30
              DL2018_12
              :DB  25,10,7,11,31

              DL2019
              :        
              DL2019_1:    DB  26,11,6,12,31
              DL2019_2
              :    DB    27,12,5,1,28
              DL2019_3
              :    DB    25,1,6,2,31
              DL2019_4
              :    DB    27,2,5,3,30
              DL2019_5
              :    DB    27,3,5,4,31
              DL2019_6
              :    DB    28,4,3,5,30
              DL2019_7
              :    DB    29,5,3,6,31
              DL2019_8
              :    DB    1,7,30,8,31
              DL2019_9
              :    DB    3,8,29,9,30
              DL2019_10
              :DB    3,9,28,10,31
              DL2019_11
              :DB    5,10,26,11,30
              DL2019_12
              :DB    6,11,26,12,31

              DL2020
              :        
              DL2020_1:    DB  7,12,25,1,31
              DL2020_2
              :    DB    8,1,23,2,29
              DL2020_3
              :    DB    8,2,24,3,31
              DL2020_4
              :    DB    9,3,23,4,30
              DL2020_5
              :    DB    9,4,23,4,31
              DL2020_6
              :    DB    10,4,21,5,30
              DL2020_7
              :    DB    11,5,21,6,31
              DL2020_8
              :    DB    12,6,19,7,31
              DL2020_9
              :    DB    14,7,17,8,30
              DL2020_10
              :DB    15,8,17,9,31
              DL2020_11
              :DB    16,9,15,10,30
              DL2020_12
              :DB    17,10,14,11,31

              DL2021
              :        
              DL2021_1:    DB  19,11,13,12,31
              DL2021_2
              :    DB    20,12,12,1,28
              DL2021_3
              :    DB    18,1,13,2,31
              DL2021_4
              :    DB    20,2,12,3,30
              DL2021_5
              :    DB    20,3,12,4,31
              DL2021_6
              :    DB    21,4,10,5,30
              DL2021_7
              :    DB    22,5,10,6,31
              DL2021_8
              :    DB    23,6,8,7,31
              DL2021_9
              :    DB    25,7,7,8,30
              DL2021_10
              :DB    25,8,6,9,31
              DL2021_11
              :DB    27,9,5,10,30
              DL2021_12
              :DB  27,10,4,11,31

              DL2022
              :        
              DL2022_1:    DB  29,11,3,12,31
              DL2022_2
              :    DB    1,1,28,1,28        
              DL2022_3
              :    DB    29,1,3,2,31
              DL2022_4
              :    DB    1,3,31,4,30        ;KHONG CO NAY 1AL
              DL2022_5
              :    DB    1,4,30,5,31
              DL2022_6
              :    DB    3,5,29,6,30
              DL2022_7
              :    DB    3,6,29,7,31
              DL2022_8
              :    DB    4,7,27,8,31
              DL2022_9
              :    DB    6,8,26,9,30
              DL2022_10
              :DB    6,9,25,10,31
              DL2022_11
              :DB    8,10,24,11,30
              DL2022_12
              :DB  8,11,23,12,31

              DL2023
              :        
              DL2023_1:    DB  10,12,22,1,31
              DL2023_2
              :    DB    11,1,20,2,28
              DL2023_3
              :    DB    10,2,22,2,31
              DL2023_4
              :    DB    11,2,20,3,30
              DL2023_5
              :    DB    12,3,19,4,31
              DL2023_6
              :    DB    14,4,18,5,30
              DL2023_7
              :    DB    14,5,18,6,31
              DL2023_8
              :    DB    15,6,16,7,31
              DL2023_9
              :    DB    17,7,15,8,30
              DL2023_10
              :DB    17,8,15,9,31
              DL2023_11
              :DB    18,9,13,10,30
              DL2023_12
              :DB  19,10,13,11,31

              DL2024
              :        
              DL2024_1:    DB  20,11,11,12,31
              DL2024_2
              :    DB    22,12,10,1,29
              DL2024_3
              :    DB    21,1,10,2,31
              DL2024_4
              :    DB    23,2,9,3,30
              DL2024_5
              :    DB    23,3,8,4,31
              DL2024_6
              :    DB    25,4,6,5,30
              DL2024_7
              :    DB    26,5,6,6,31
              DL2024_8
              :    DB    27,6,4,7,31
              DL2024_9
              :    DB    29,7,3,8,30
              DL2024_10
              :DB    29,8,3,9,31
              DL2024_11
              :DB    1,10,1,10,30
              DL2024_12
              :DB  1,11,31,12,31

              DL2025
              :        
              DL2025_1:    DB  2,12,29,1,31
              DL2025_2
              :    DB    4,1,28,2,28
              DL2025_3
              :    DB    2,2,29,3,31
              DL2025_4
              :    DB    4,3,28,4,30
              DL2025_5
              :    DB    4,4,27,5,31
              DL2025_6
              :    DB    6,5,25,6,30
              DL2025_7
              :    DB    7,6,25,6,31
              DL2025_8
              :    DB    8,6,23,7,31
              DL2025_9
              :    DB    10,7,22,8,30
              DL2025_10
              :    DB    10,8,21,9,31
              DL2025_11
              :    DB    12,9,20,10,30
              DL2025_12
              :    DB  12,10,20,11,31

              DL2026
              :        
              DL2026_1:    DB  13,11,19,12,31
              DL2026_2
              :    DB    14,12,17,1,28
              DL2026_3
              :    DB    13,1,19,2,31
              DL2026_4
              :    DB    14,2,17,3,30
              DL2026_5
              :    DB    15,3,17,4,31
              DL2026_6
              :    DB    16,4,15,5,30
              DL2026_7
              :    DB    17,5,14,6,31
              DL2026_8
              :    DB    19,6,13,7,31
              DL2026_9
              :    DB    20,7,11,8,30
              DL2026_10
              :DB    21,8,10,9,31
              DL2026_11
              :DB    23,9,9,10,30
              DL2026_12
              :DB  23,10,9,11,31

              DL2027
              :        
              DL2027_1:    DB  24,11,8,12,31
              DL2027_2
              :    DB    25,12,6,1,28
              DL2027_3
              :    DB    24,1,8,2,31
              DL2027_4
              :    DB    25,2,7,3,30
              DL2027_5
              :    DB    25,3,6,4,31
              DL2027_6
              :    DB    27,4,5,5,30
              DL2027_7
              :    DB    27,5,4,6,31
              DL2027_8
              :    DB    29,6,2,7,31
              DL2027_9
              :    DB    1,8,30,9,30
              DL2027_10
              :DB    2,9,29,10,31
              DL2027_11
              :DB    4,10,28,11,30
              DL2027_12
              :DB  4,11,28,12,31

              DL2028
              :        
              DL2028_1:    DB  5,12,26,1,31
              DL2028_2
              :    DB    7,1,25,2,29
              DL2028_3
              :    DB    6,2,26,3,31
              DL2028_4
              :    DB    7,3,25,4,30
              DL2028_5
              :    DB    7,4,24,5,31
              DL2028_6
              :    DB    9,5,23,5,30
              DL2028_7
              :    DB    9,5,22,6,31
              DL2028_8
              :    DB    11,6,20,7,31
              DL2028_9
              :    DB    13,7,19,8,30
              DL2028_10
              :DB    13,8,18,9,31
              DL2028_11
              :DB    15,9,16,10,30
              DL2028_12
              :DB  16,10,16,11,31

              DL2029
              :        
              DL2029_1:    DB  17,11,15,12,31
              DL2029_2
              :    DB    18,12,13,1,28
              DL2029_3
              :    DB    17,1,15,2,31
              DL2029_4
              :    DB    18,2,14,3,30
              DL2029_5
              :    DB    18,3,13,4,31
              DL2029_6
              :    DB    20,4,12,5,30
              DL2029_7
              :    DB    20,5,11,6,31
              DL2029_8
              :    DB    22,6,10,7,31
              DL2029_9
              :    DB    23,7,8,8,30
              DL2029_10
              :DB    24,8,8,9,31
              DL2029_11
              :DB    25,9,6,10,30
              DL2029_12
              :DB  26,10,5,11,31

              DL2030
              :        
              DL2030_1:    DB  28,11,4,12,31
              DL2030_2
              :    DB    29,12,2,1,28
              DL2030_3
              :    DB    28,1,4,2,31
              DL2030_4
              :    DB    29,2,3,3,30
              DL2030_5
              :    DB    29,3,2,4,31
              DL2030_6
              :    DB    1,5,31,6,30        ;KHONG CO NAY 1AL
              DL2030_7
              :    DB    1,6,30,7,31
              DL2030_8
              :    DB    3,7,29,8,31
              DL2030_9
              :    DB    4,8,27,9,30
              DL2030_10
              :DB    5,9,27,10,31
              DL2030_11
              :DB    6,10,25,11,30
              DL2030_12
              :DB  7,11,25,12,31
              RET 
              Last edited by pctcom; 24-07-2011, 12:35.
              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


              • #8
                Cách thức hoạt động.

                Đoạn code trên hoạt động như sau:

                Trỏ tới năm hiện tại => trỏ tới tháng hiện tại => cất 5 biến trong tháng từ bảng tra vào ram để chuẩn bị cho việc chuyển đổi. => chuyển đổi Dương lịch thành Âm lịch.
                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


                • #9
                  Nguyên văn bởi pctcom Xem bài viết
                  Đoạn code trên hoạt động như sau:

                  Trỏ tới năm hiện tại => trỏ tới tháng hiện tại => cất 5 biến trong tháng từ bảng tra vào ram để chuẩn bị cho việc chuyển đổi. => chuyển đổi Dương lịch thành Âm lịch.
                  Hi. chủ đề này không thấy hứng thú với mọi người nhỉ.
                  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


                  • #10
                    Bài viết của bạn rất hay! Bạn cho mình hỏi trong mảng đó bạn còn đưa thêm "tổng ngày trong tháng" để làm gì vậy?
                    Mình đang edit lại hàm chuyển đổi dương lịch sang âm lịch chạy trên Matlab, rồi viết thêm hàm nữa xuất dữ liệu như của bạn nhưng với từ năm a tới năm b (chẳng hạn 1900 đến 2100) sẽ không phải mất công dò.
                    Thân

                    Comment


                    • #11
                      Nguyên văn bởi ksclc07i Xem bài viết
                      Bài viết của bạn rất hay! Bạn cho mình hỏi trong mảng đó bạn còn đưa thêm "tổng ngày trong tháng" để làm gì vậy?
                      Biến "Số ngày trong tháng" dùng so sánh hỗ trợ việc cân chỉnh ngày tháng đó bạn.
                      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


                      • #12
                        thật ra cach nay minh củng đã từng viết giống bạn nhưng ma lâu rồi khi tao bảng tra áp dụng công thức tính thi vẫn còn chổ chưa đúng tuyệt đối cho lấm.

                        Comment


                        • #13
                          Nguyên văn bởi phat1989kiss Xem bài viết
                          thật ra cach nay minh củng đã từng viết giống bạn nhưng ma lâu rồi khi tao bảng tra áp dụng công thức tính thi vẫn còn chổ chưa đúng tuyệt đối cho lấm.
                          Chính xác tuyệt đối chứ bạn.

                          Code của bạn cho kết quả sai ra sao? bạn cho ví dụ xem tôi có thể giúp gì cho bạn.
                          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


                          • #14
                            uh minh xem code cua ban roi có thể của bạn đúng rồi .tại cái bảng tra của mình có vấn đề.sẳn tiện cho mình hỏi luôn cái chổ này
                            DL2016:
                            DL2016_1: DB 22,11,10,12,31
                            DL2016_2: DB 23,12,8,1,29
                            DL2016_3: DB 23,1,9,2,31
                            DL2016_4: DB 24,2,7,3,30
                            DL2016_5: DB 25,3,7,4,31
                            DL2016_6: DB 26,4,5,5,30
                            DL2016_7: DB 27,5,4,6,31
                            DL2016_8: DB 29,6,3,7,31
                            DL2016_9: DB 1,8,31,9,30 ;KHONG CO NAY 1AL // cai dòng này thông số 31 va 9 ban lấy như thế nào .vì ngày 1/9 củng là 1/8 am lịch thì ở đây không phải la 1/8 mà tại sao là 31/9 vậy bạn .
                            DL2016_10B 1,9,31,10,31
                            DL2016_11B 2,10,29,11,30
                            DL2016_12B 3,11,29,12,31

                            Comment


                            • #15
                              à em biết ông anh làm sao có được thông số đó rồi . biến thứ 5 này thật sự có cần thiết không .tại sao không bỏ đi để tiết kiệm byte .hi làm thêm các chức năng như chạy ở chế độ 12/24h ,am/pm,thứ...nếu bỏ mấy thằng này phí ic thời gian thực ghê.
                              Last edited by phat1989kiss; 16-08-2011, 10:53.

                              Comment

                              Về tác giả

                              Collapse

                              pctcom Tìm hiểu thêm về pctcom

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X