Sorprendentemente, esta simple tarea ya no parece existir, así que ...
Su tarea es escribir un programa que tome como entrada un tiempo de 12 horas y lo convierta en "hora militar" o en formato de 24 horas.
La entrada tendrá la forma:
HH:MM am/pm
Aunque se permiten ligeras variaciones:
El espacio que separa am / pm del resto del tiempo es opcional.
La última parte puede ser "am" / "pm" o "a" / "p".
Cualquier capitalización está bien.
La salida será el tiempo ingresado, transformado en formato de 24 horas. Puede ser un número o una cadena.
Tanto para la entrada como para la salida:
Los 0 en primer lugar son opcionales. Los 0 en los últimos 3 lugares son obligatorios.
el delimitador que separa las horas y los minutos puede ser un ":", "" (un espacio) o nada.
Otras notas:
La medianoche se puede expresar como 0000 o 2400.
La medianoche se considerará "am", mientras que el mediodía se considerará "pm".
Su programa puede ser una función o un programa completo, y debería devolver el resultado o enviarlo a la salida estándar. El espacio en blanco al final está bien.
Ejemplos (no es necesario que admita todos los formatos):
12:00am -> 0000
1200 pm -> 1200
1234Am -> 00:34
134a -> 134
01:34PM -> 13 34
1234pm -> 1234
Este es el código de golf, por lo que gana el menor número de bytes. Dado que esto es tan trivial de resolver usando un incorporado, sería bueno ver algún código que resuelva esto manualmente (pero el uso de los incorporados está bien).
Solo para aclarar, no es necesario que admita todos los formatos posibles. Está bien admitir solo una entrada y un formato de salida único (de su elección). Sin embargo, me gustaría limitar el formato como se describe anteriormente (que ya es bastante gratuito). {1134,'pm'}
, por ejemplo, sería inaceptable.
01:54pm
¿funcionaría, pero 1:54pm
no lo haría?