Ini terinspirasi oleh salah satu pertanyaan Downgoat di Sandbox, di mana saya menyarankan agar dia memasukkan 31 April sebagai hari Pi untuk orang yang menggunakan format hari / bulan, hanya agar dia memberi tahu saya bahwa tidak ada 31 April!
Diberikan string tanggal dalam format bulan / hari yang mungkin tidak valid, tampilkan tanggal yang benar menggunakan rollover. (Rollover pertama bulan, lalu rollover hari).
Contoh:
"15/43" - Ini berbunyi sebagai hari ke 43 di bulan ke 15. Pertama, kami memutar bulan ke tahun berikutnya, jadi kami berakhir dengan 3 (Maret). Sekarang, sejak Maret hanya memiliki 31 hari, kami memperpanjang hari ekstra menjadi April, jadi kami menampilkan tanggal aktual sebagai "4/12" (12 April).
"3/16" - Ini adalah tanggal yang valid (16 Maret). Kembalikan apa adanya.
"12/64" - Ah, begitu banyak kenangan indah dari 64 Desember ... Desember 31 hari, Januari 31 hari, jadi yang saya maksud sebenarnya adalah "2/2" (2 Februari).
"19/99" - Pertama, 19 menjadi 7 (Juli). Juli memiliki 31 hari, Agustus memiliki 31 hari, September memiliki 30 hari, sehingga hasilnya adalah "10/7" (7 Oktober).
"1/99999" - Setahun memiliki 365 hari. 99999 (mod 365) = 354. Hari 354 tahun ini adalah "12/20" .
"9999999/10" - Rupanya, 9999999 (mod 12) = 3, jadi ini "3/10" (10 Maret).
Kriteria:
Bulan input adalah bilangan bulat> 0. Hari input adalah bilangan bulat> 0. Tahun tidak perlu ditentukan, karena itu tidak ada tahun kabisat untuk menangani.
Memperbarui:
Karena saya pikir itu akan terlalu menyederhanakan tantangan, fungsi kalender, seperti yang ada di kelas Kalender Java , dilarang. Fungsi parsing / pemformatan tanggal masih diizinkan.
1/99999
sebaiknya 12/19
saya hasilkan .