Tôi đang viết một chương trình có nghĩa vụ tính toán các tháng giữa 2 ngày đã cho và trả về giá trị cho chương trình. Ví dụ, nếu tôi phải tính toán số tháng giữa ngày 01 tháng 4 và 30 tháng 6 (đó là một phần tư, 3 tháng), và tôi sử dụng đoạn mã sau:Cách tính chênh lệch CHỈ trong tháng sử dụng Joda API của Java
DateTime start = new DateTime().withDate(2011, 4, 1);
DateTime end = new DateTime().withDate(2011, 6, 30);
Months mt = Months.monthsBetween(start, end);
int monthDiff = mt.getMonths();
Sử dụng này, tôi vẫn nhận được " 2 "là số tháng, trong khi đó thực sự là" 3 "tháng. Đây là một ví dụ về những gì tôi muốn. Tôi chỉ tính số tháng (tức là từ ngày 1 của tháng bắt đầu t ngày cuối cùng của tháng kết thúc) và tôi không cần phân tích bổ sung như ngày, tuần, giờ, v.v. Làm cách nào để đạt được điều này?
Mọi trợ giúp sẽ được đánh giá cao.
Không thể chờ đợi để đọc các câu trả lời từ Jon Skeet, các Stackoverflow và ngày Chuyên gia API;) – DaveFar
Tôi tin câu trả lời đúng giờ của Yoda là chính xác. Từ ngày 1 tháng 4 đến (nhưng không bao gồm) ngày 30 tháng 6 sẽ là _almost_ 3 tháng. Tôi nghĩ cả hai ngày đều có cùng thời gian (00:00) và do đó ngày 30 tháng 6 không thực sự được bao gồm trong phạm vi. – extraneon
@extraneon - Đúng vậy. Thời gian hiển thị là 2 tháng, 4 tuần và 1 ngày. –