Tự gán ngày kỷ niệm vào lịch (adding anniversaries to Calendar)

Thảo luận trong 'ỨNG DỤNG TÍNH TOÁN, THỜI GIAN' bắt đầu bởi banong, 7 Tháng mười hai 2008.

  1. phanhien

    phanhien Thành viên

    Bài viết:
    405
    Được Like:
    158
    Mình mới tìm được quyển này, bạn đọc tạm nhé.

    Các file đính kèm:

    butbi777 and tinchouruby like this.
  2. Blood Elf

    Blood Elf Thành viên

    Bài viết:
    678
    Được Like:
    243
    Sao mình ko xem dc mấy cái hình nhỉ
  3. butbi777

    butbi777 Thành viên

    Bài viết:
    23
    Được Like:
    18
    Bạn đang dùng máy gì? Nếu là E71 thì trong calendar có sẵn rồi, việc gì phải phát minh lại bánh xe![-X
  4. butbi777

    butbi777 Thành viên

    Bài viết:
    23
    Được Like:
    18
    Bạn muốn xem hình gì?************************?:-?
  5. butbi777

    butbi777 Thành viên

    Bài viết:
    23
    Được Like:
    18
    Cám ơn bạn về lòng nhiệt tình. <:-P
  6. butbi777

    butbi777 Thành viên

    Bài viết:
    23
    Được Like:
    18
    Chỉnh sửa chương trình để gán số liệu trọn trong một năm dương lịch:

    Chương tình Anni.py của bạn Đỗ Sản hay và rất có ích. Tuy nhiên, ở phiên bản hiện nay khi gán các ngày kỷ niệm âm lịch thì số liệu gán vào năm dương lịch được chọn và có thể còn trùm sang cả năm kế tiếp. Ví dụ một ngày kỷ niệm rơi vào tháng 12 âm lịch thì chắc chắn phần lớn sẽ rơi vào tháng 1 của năm dương lịch sau. Trong khi đó những ngày đầu năm dương lịch đang xét sẽ không có số liệu của những ngày âm lịch cuối năm trước. Việc số liệu âm lịch gán vào hai năm dương lịch kề nhau như thế còn gây phiền hà khi gán và xóa số liệu. Ví dụ như hướng dẫn là phải gán năm lớn trước rồi mới tới năm nhỏ sau. Hoặc khi xóa thì chương trình chỉ xóa trọn năm dương lịch đã chọn thôi, còn số liệu âm lịch đã gán vào năm dương lịch sau thì còn nguyên đấy. Hậu quả là nếu ta xóa số liệu cũ của một năm nào đó rồi nạp lại số liệu mới thì số lệu âm lịch của những tháng đầu năm sau sẽ không chính xác (hoặc thừa do lặp lại, hoặc không đúng ý đồ của file anni.txt đã soạn).

    Tôi đã chỉnh lại chương trình để việc gán số liệu chỉ liên quan trọn trong một năm dương lịch. Các bạn sửa như sau:

    Dùng notepad mở file anni.py, tìm đến đoạn định nghĩa thủ tục process. Tiếp theo tìm đến dòng else:, rồi thêm vào dòng mã như minh họa bên dưới.


    #~~~~~~~~~~~~~~~~~
    def process(s, y):
    ...............
    ...............
    else:
    t = al.L2S(d, m, y) # Lunar to Solar date.
    if t[0] != y: t = al.L2S(d, m, y-1) ### dòng này thêm vào
    r = time.mktime((t[2],t[1],t[0], 0,0,0,0,0,0))
    ...............
    ...............

    Bây giờ chương trình cho phép bạn điền ngày kỷ niệm cho bất kỳ năm dương lịch nào mà không phải theo thứ tự từ năm lớn đến năm nhỏ. Cũng như việc bạn xóa đi nạp lại số liệu của bất kỳ năm nào mà không ảnh hưởng đến các năm liền kề.
    phanhien and quocsan like this.
  7. phanhien

    phanhien Thành viên

    Bài viết:
    405
    Được Like:
    158
    Không được rồi bác ạ. Nó cài đúng năm 2010 nhưng lại đưa cả vào mấy tháng cuối năm 2009. Bác xem lại thử xem.
    quocsan thích bài này.
  8. butbi777

    butbi777 Thành viên

    Bài viết:
    23
    Được Like:
    18
    Sorry, mình đã viết nhầm t[2] thành t[0], vậy dòng mã thêm vào phải là như sau:

    #~~~~~~~~~~~~~~~~~
    def process(s, y):
    ...............
    ...............
    else:
    t = al.L2S(d, m, y) # Lunar to Solar date.
    if t[2] != y: t = al.L2S(d, m, y-1) ### dòng này thêm vào
    r = time.mktime((t[2],t[1],t[0], 0,0,0,0,0,0))
    ...............
    ...............

    Bây giờ chắc chắn chạy ngon rồi (đã test cẩn thận rồi)!
    quocsan and augustan like this.
  9. quocsan

    quocsan Thành viên

    Bài viết:
    17
    Được Like:
    8
    Cảm ơn mọi người, vui thật!
    Cảm ơn ButBi777!
    Bạn đã có một bước sửa chữa rất thông minh!
    Khi viết đoạn code, tôi không nghĩ ra được như bạn!

    Nguyễn Quốc Sản.
  10. Be Yeu

    Be Yeu Super Moderator Staff Member

    Bài viết:
    4,781
    Được Like:
    5,681
    Nhờ bro. hoàn thiện rồi post lên share cho ACE dùng chung với ! Thanks !