Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 16 kết quả

Đề tài: Tính khoảng cách giữa 2 ngày trong lớp Date

  1. #1
    Ngày gia nhập
    12 2011
    Nơi ở
    HN
    Bài viết
    5

    Mặc định Tính khoảng cách giữa 2 ngày trong lớp Date

    Em cài đặt mảng Date gồm ng=ngày,th=tháng,nam=năm
    Trong đó phần cài đặt operator - là khoảng cách giữa 2 ngày mà cứ sai mãi tính 1/1/1000-30/12/999 ra 700 mới sợ chứ ai giúp em sửa cái code này đc ko

    Code:
    int operator-(Date x){		
    		long kc=0;
    		kc=abs(nam-x.nam)*365;
    		int ngay1=ng-1+(th*30-30);
    		int ngay2=x.ng-1+(x.th*30-30);
    		kc=kc+abs(ngay1-ngay2);
    		return kc;
    				
    	}
    }

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Đề nghị tham khảo thêm các bài viết về vấn đề ngày tháng năm. Tư tưởng trừ 2 ngày của bạn như thế này chưa ổn đâu .
    Trừ 2 ngày phải biết ngày nào lớn hơn mà trừ cho chính xác. Đánh đồng abs thế kia thì xịt là phải rồi.

    Hơn nữa 1 tháng ko nhất tiheets phải có 30 ngay, 1 năm ko nhất thiết phải có 365 ngày.
    Tính "bình quân" như thế thì cũng xịt.
    ______
    Vẽ các mốc thời gian lên trục số , nhất là vẽ thêm các mốc đầu năm và cuối năm.
    Từ đó ngẫm nghĩ ra cách trừ 2 ngày (tính khoảng cách 2 ngày) ra cho đúng.
    Um Mani Padme Hum...!!

  3. #3
    Ngày gia nhập
    12 2011
    Nơi ở
    HN
    Bài viết
    5

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Đề nghị tham khảo thêm các bài viết về vấn đề ngày tháng năm. Tư tưởng trừ 2 ngày của bạn như thế này chưa ổn đâu .
    Trừ 2 ngày phải biết ngày nào lớn hơn mà trừ cho chính xác. Đánh đồng abs thế kia thì xịt là phải rồi.

    Hơn nữa 1 tháng ko nhất tiheets phải có 30 ngay, 1 năm ko nhất thiết phải có 365 ngày.
    Tính "bình quân" như thế thì cũng xịt.
    ______
    Vẽ các mốc thời gian lên trục số , nhất là vẽ thêm các mốc đầu năm và cuối năm.
    Từ đó ngẫm nghĩ ra cách trừ 2 ngày (tính khoảng cách 2 ngày) ra cho đúng.
    Quên mất tớ ko nói qui định tháng luôn có 30 ngày, năm luôn có 365 ngày nhưng sao abs lại ko đc @@

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Trích dẫn Nguyên bản được gửi bởi hiepsibibenhtri Xem bài viết
    Đơn giản thôi mà qui định tháng luôn có 30 ngày, năm luôn có 365 ngày nhưng sao abs lại ko đc @@
    ...Đến nước này thì đành "Hướng dẫn" tiếp vậy:
    Lật tờ lịch treo trên tường ra và đếm xem mỗi tháng có bao nhiêu ngày.
    Nếu nhà ko có lịch thì bật celendar ở máy tính ra xem, hoặc ở điện thoại cũng có
    __
    Đọc xong biết tháng có bao nhiêu ngày, năm có bao nhiêu ngày rồi
    Thì đọc lại hướng dẫn cách mô tả vấn đề lên giấy như bài viết ở trên. Xin hãy đọc !

    Quên mất tớ ko nói qui định tháng luôn có 30 ngày, năm luôn có 365 ngày nhưng sao abs lại ko đc
    Kiểu ngày bạn tự định nghĩa? Ok chấp nhận nhưng hãy xem lại cách định nghĩa. Mâu thuẫn quá lớn
    1 tháng 30 ngày => 12 tháng là 360 ngày, ko có chuyện 365. Đã "qui định" thì "qui định" cho trót, cho đúng.
    Hay là muốn 1 năm có 365.0/30 tháng ?
    P/s: Thêm vào đó 1 bài toán về ngày tháng mà ko có sự thồi thụt, chênh lệch tháng này tháng nọ, năm này năm nọ (năm nhuận) thì ... quá bựa. Và nếu có thế thì quay lại bài về Giờ phút giây
    Đã được chỉnh sửa lần cuối bởi clchicken : 02-01-2012 lúc 07:11 PM.
    Um Mani Padme Hum...!!

  5. #5
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    đề cho như pác thì đổi tất ra ngày hết rùi trừ 1 phát cho khỏe.đề như đùa
    HT117-5277

  6. #6
    Ngày gia nhập
    12 2011
    Nơi ở
    HN
    Bài viết
    5

    Mặc định Tính khoảng cách giữa 2 ngày trong lớp Date

    Trích dẫn Nguyên bản được gửi bởi treatmaster Xem bài viết
    đề cho như pác thì đổi tất ra ngày hết rùi trừ 1 phát cho khỏe.đề như đùa
    Thì cũng chỉ như thế thôi nhưng em làm mãi mà vẫn ko ra đây

  7. #7
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    năm*365+tháng*30+ngày = số ngày từ 1/1/1
    xong lấy 2 cái trừ nhau
    HT117-5277

  8. #8
    Ngày gia nhập
    12 2011
    Nơi ở
    HN
    Bài viết
    5

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    ...Đến nước này thì đành "Hướng dẫn" tiếp vậy:
    Lật tờ lịch treo trên tường ra và đếm xem mỗi tháng có bao nhiêu ngày.
    Nếu nhà ko có lịch thì bật celendar ở máy tính ra xem, hoặc ở điện thoại cũng có
    __
    Đọc xong biết tháng có bao nhiêu ngày, năm có bao nhiêu ngày rồi
    Thì đọc lại hướng dẫn cách mô tả vấn đề lên giấy như bài viết ở trên. Xin hãy đọc !


    Kiểu ngày bạn tự định nghĩa? Ok chấp nhận nhưng hãy xem lại cách định nghĩa. Mâu thuẫn quá lớn
    1 tháng 30 ngày => 12 tháng là 360 ngày, ko có chuyện 365. Đã "qui định" thì "qui định" cho trót, cho đúng.
    Hay là muốn 1 năm có 365.0/30 tháng ?
    P/s: Thêm vào đó 1 bài toán về ngày tháng mà ko có sự thồi thụt, chênh lệch tháng này tháng nọ, năm này năm nọ (năm nhuận) thì ... quá bựa. Và nếu có thế thì quay lại bài về Giờ phút giây
    Ờ nhỉ.
    Thực ra đây là đề thi làm trong 60p cài đặt lớp ngày tháng rất nhiều hàm nên chỉ qui định như vậy thôi bác nói em mới biết tại sao nó lại ra kết quả như thế rồi ( 1/1/1000 - 30/12/999=6 ) )! Ngu thật cảm ơn bác!
    Đã được chỉnh sửa lần cuối bởi hiepsibibenhtri : 02-01-2012 lúc 08:47 PM.

  9. #9
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Nếu 1 tháng luôn luôn có 30 ngày thì làm như vầy:

    ngayChenhLech = abs( (nam1*12*30 + thang1*30 + ngay1) - (nam2*12*30 + thang2*30 + ngay2) );

    Trên thực tế, muốn tính chênh lệch giữa 2 ngày thì người ta dùng một công thức tính ngày Julian, sau đó so sánh 2 ngày ấy với nhau

    ngayChenhLech = abs( NgayJulian(date1) - NgayJulian(date2) );

    Công thức (Wolfram Alpha)

    JD = 367*Y - 7*(Y + (M+9)/12)/4 - 3*((Y+(M-9)/7)/100+1)/4 + 275*M/9 + D + 1721028.5

    Số lẻ 0.5 ở phía sau để phân biệt ngày Julian bắt đầu 12 giờ trưa trong khi ngày Gregorian (ngày thường) bắt đầu từ 12 giờ đêm. Nếu bỏ 0.5 ở phía sau cho giản tiện thì công thức còn lại

    JD = 367*Y - 7*(Y + (M+9)/12)/4 - 3*((Y+(M-9)/7)/100+1)/4 + 275*M/9 + D + 1721028

  10. #10
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nội
    Bài viết
    381

    Tính Khoảng cách giữ 2 ngày
    C Code:
    1. int TinhSoNgay(int NgayTruoc, int ThangTruoc, int NamTruoc, int NgaySau, int ThangSau, int NamSau)
    2. {
    3.     int tg1,tg2,a,b;
    4.     if(ThangTruoc == 1 || ThangTruoc == 3 ||ThangTruoc == 5|| ThangTruoc== 7|| ThangTruoc == 8|| ThangTruoc == 10 || ThangTruoc == 12)
    5.         tg1 = ThangTruoc*31;
    6.     else
    7.         if(ThangTruoc == 2)
    8.         {
    9.             if(NamTruoc % 100 != 0 && NamTruoc % 4 == 0 )
    10.                 tg1 = ThangTruoc*29;
    11.             else tg1 = ThangTruoc*28;
    12.         }else tg1 = ThangTruoc*30;
    13.     if(NamTruoc % 100 != 0 && NamTruoc % 4 == 0 )
    14.         tg2 = NamTruoc*366;
    15.     else tg2 = NamTruoc*365;
    16.     a = NgayTruoc + tg1 + tg2;
    17.    
    18.     if(ThangSau == 1 || ThangSau == 3 ||ThangSau == 5|| ThangSau== 7|| ThangSau == 8|| ThangSau == 10 || ThangSau == 12)
    19.         tg1 = ThangSau*31;
    20.     else
    21.         if(ThangSau == 2)
    22.         {
    23.             if(NamSau % 100 != 0 && NamSau % 4 == 0 )
    24.                 tg1 = ThangSau*29;
    25.             else tg1 = ThangSau*28;
    26.         }else tg1 = ThangSau*30;
    27.     if(NamSau % 100 != 0 && NamSau % 4 == 0 )
    28.         tg2 = NamSau*366;
    29.     else tg2 = NamSau*365;
    30.     b = NgaySau + tg1 + tg2;
    31.     return b-a;
    32. }

    Trước có làm một bài tập liên quan đến vấn đề này nên share cho bạn tham khảo!

    skype: hvphu2010
    Yahoo: hvphu2010
    Sdt: 0129 609 4567

Các đề tài tương tự

  1. [Hỏi] kiểu date trong java
    Gửi bởi kecanhnguc trong diễn đàn Nhập môn lập trình Java
    Trả lời: 4
    Bài viết cuối: 10-11-2013, 02:18 PM
  2. Định dạng ngày tháng trong lớp date C++
    Gửi bởi huskar trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 0
    Bài viết cuối: 20-11-2012, 02:07 PM
  3. Thư viện DATE trong C++
    Gửi bởi jb_hoangluan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 01-05-2011, 01:25 PM
  4. Kiểm tra Date trong MaskedTextbox
    Gửi bởi MYNAM trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 20-10-2010, 09:02 AM
  5. Hàm xử lý ngày giờ (Date & Time) trong lập trình C
    Gửi bởi Xcross87 trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 24-01-2008, 05:42 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn