Điều này được lấy cảm hứng từ một trong những câu hỏi của Downgoat trong Sandbox, nơi tôi đề nghị anh ấy đưa ngày 31 tháng 4 là ngày Pi cho những người sử dụng định dạng ngày / tháng, chỉ để anh ấy thông báo cho tôi rằng không có ngày 31 tháng 4!
Đưa ra một chuỗi ngày ở định dạng tháng / ngày có thể không hợp lệ, hãy xuất ngày chính xác bằng cách sử dụng cuộn qua. (Đầu tiên cuộn qua tháng, sau đó cuộn qua ngày).
Ví dụ:
"15/43" - Đây là ngày thứ 43 của tháng thứ 15. Đầu tiên, chúng tôi lăn qua tháng này sang năm tiếp theo, vì vậy chúng tôi kết thúc với 3 (tháng 3). Bây giờ, kể từ tháng 3 chỉ có 31 ngày, chúng tôi tái đầu tư các ngày thêm vào tháng 4, vì vậy chúng tôi đưa ra ngày thực tế là "4/12" (ngày 12 tháng 4).
"3/16" - Đây là một ngày hợp lệ (ngày 16 tháng 3). Trả lại nó như là.
"12/64" - Ah, rất nhiều kỷ niệm đẹp từ ngày 64 tháng 12 ... Tháng 12 có 31 ngày, tháng 1 có 31 ngày, vì vậy điều tôi thực sự muốn nói là "2/2" (ngày 2 tháng 2).
"19/99" - Đầu tiên, ngày 19 trở thành ngày 7 (tháng 7). Tháng 7 có 31 ngày, tháng 8 có 31 ngày, tháng 9 có 30 ngày, do đó, sản lượng là "10/7" (ngày 7 tháng 10).
"1/99999" - Một năm có 365 ngày. 99999 (mod 365) = 354. Ngày 354 trong năm là "12/20" .
"9999999/10" - Rõ ràng, 9999999 (mod 12) = 3, vì vậy đây là "3/10" (ngày 10 tháng 3).
Tiêu chí:
Tháng đầu vào là một số nguyên> 0. Ngày đầu vào là một số nguyên> 0. Năm không bao giờ cần được chỉ định, do đó không có năm nhuận để xử lý.
Cập nhật:
Theo tôi nghĩ, nó sẽ đơn giản hóa quá mức thách thức, các hàm lịch, chẳng hạn như các hàm trong lớp Lịch Java , bị cấm. Chức năng phân tích cú pháp / định dạng ngày vẫn được cho phép.
1/99999
nên mang lại 12/19
.