Esto está inspirado en una de las preguntas de Downgoat en Sandbox, donde le sugerí que incluyera el 31 de abril como día Pi para las personas que usan el formato día / mes, ¡solo para que él me informe que no hay 31 de abril!
Dada una cadena de fecha en mes / día formato de que puede no ser válida, envíe la fecha correcta utilizando la renovación. (Primero reinvierta el mes, luego reinvierta el día).
Ejemplos:
"15/43" - Esto se lee como el día 43 del mes 15. Primero, pasamos el mes al próximo año, por lo que terminamos con 3 (marzo). Ahora, dado que marzo solo tiene 31 días, transferimos los días adicionales a abril, por lo que mostramos la fecha real como "4/12" (12 de abril).
"3/16" : esta es una fecha válida (16 de marzo). Devuélvelo como está.
"12/64" - Ah, tantos buenos recuerdos del 64 de diciembre ... Diciembre tiene 31 días, enero tiene 31 días, así que lo que realmente quiero decir es "2/2" (2 de febrero).
"19/99" - Primero, el 19 se convierte en un 7 (julio). Julio tiene 31 días, agosto tiene 31 días, septiembre tiene 30 días, por lo que la salida es "10/7" (7 de octubre).
"1/99999" : un año tiene 365 días. 99999 (mod 365) = 354. El día 354 del año es "12/20" .
"9999999/10" - Aparentemente, 9999999 (mod 12) = 3, entonces esto es "3/10" (10 de marzo).
Criterios
El mes de entrada es un entero> 0. El día de entrada es un entero> 0. El año nunca necesita ser especificado, por lo que no hay años bisiestos que tratar.
Actualizar:
Como creo que simplificaría demasiado el desafío, las funciones de calendario, como las de la clase Java Calendar , están prohibidas. Sin embargo, las funciones de análisis / formato de fechas todavía están permitidas.
1/99999
debería ceder 12/19
, creo.