นี่เป็นแรงบันดาลใจจากหนึ่งในคำถามของ Downgoat ใน Sandbox ที่ฉันแนะนำว่าเขารวมวันที่ 31 เมษายนเป็นวัน Pi สำหรับผู้ที่ใช้รูปแบบวัน / เดือนเพียงเพื่อให้เขาบอกฉันว่าไม่มีวันที่ 31 เมษายน!
กำหนดสตริงวันที่ในรูปแบบเดือน / วันที่อาจไม่ถูกต้องส่งออกวันที่ที่ถูกต้องโดยใช้โรลโอเวอร์ (โรลโอเวอร์ครั้งแรกของเดือนจากนั้นโรลโอเวอร์วัน)
ตัวอย่าง:
"15/43" - นี่เป็นวันที่ 43 ของเดือนที่ 15 อันดับแรกเราเลื่อนเดือนไปยังปีถัดไปดังนั้นเราจึงสิ้นสุดด้วย 3 (มีนาคม) ขณะนี้เนื่องจากเดือนมีนาคมมีเพียง 31 วันเราจึงเลื่อนวันพิเศษเป็นเดือนเมษายนดังนั้นเราจึงส่งออกวันที่ตามจริงเป็น"4/12" (12 เมษายน)
"3/16" - นี่คือวันที่ที่ถูกต้อง (16 มีนาคม) กลับมาเหมือนเดิม
"12/64" - อาความทรงจำที่น่ารักมากมายตั้งแต่ 64 ธันวาคม ... ธันวาคมมี 31 วันมกราคมมี 31 วันดังนั้นสิ่งที่ฉันหมายถึงคือ"2/2" (2 กุมภาพันธ์)
"19/99" - อย่างแรกคือ 19 กลายเป็น 7 (กรกฎาคม) กรกฎาคมมี 31 วันสิงหาคมมี 31 วันกันยายนมี 30 วันดังนั้นผลลัพธ์คือ"10/7" (7 ตุลาคม)
"1/99999" - หนึ่งปีมี 365 วัน 99999 (สมัย 365) = 354. วันที่ 354 ของปี"12/20"
"9999999/10" - เห็นได้ชัดว่า 9999999 (mod 12) = 3 ดังนั้นนี่คือ"3/10" (10 มีนาคม)
เกณฑ์:
เดือนที่นำเข้าเป็นจำนวนเต็ม> 0 วันที่ป้อนเป็นจำนวนเต็ม> 0 ปีไม่จำเป็นต้องระบุเนื่องจากไม่มีปีอธิกสุรทินที่ต้องจัดการ
ปรับปรุง:
อย่างที่ฉันคิดว่ามันจะทำให้ความท้าทายมากเกินไปฟังก์ชั่นปฏิทินเช่นในคลาสJava Calendarถูกแบน ฟังก์ชันการแยกวิเคราะห์ / จัดรูปแบบวันที่ยังคงได้รับอนุญาต
1/99999
ควรให้ผล12/19
ฉันคิดว่า