La manera en que medimos el tiempo es un poco enredada. Tenemos 60 segundos en un minuto y 60 minutos en una hora. Esto viene de la antigua Babilonia, donde usaban el 60 como base de su sistema numérico. Tenemos 24 horas en un día, 7 días en una semana, ¿y cuántos días en un mes? Bueno, los días de un mes dependen no solo de qué mes sea, sino también del tipo de calendario que se use en el país donde vives.
¿Y si, en cambio, solo usáramos segundos para expresar intervalos de tiempo? Entonces podríamos usar los prefijos del sistema métrico para escribir grandes cantidades de segundos en cantidades más fáciles de comprender.
Si algún día colonizamos Marte o algún otro planeta, medir el tiempo va a ser aún más enredado. Si alguien dice «año», ¿se refiere a un año en la Tierra o a un año en Marte?
La idea de este ejercicio surgió de la novela de ciencia ficción «A Deepness in the Sky», del autor Vernor Vinge. En ella, el autor usa el sistema métrico como base para medir el tiempo.
Tu tarea es determinar la fecha y la hora un gigasegundo después de una fecha determinada.
Un gigasegundo equivale a mil millones de segundos. Es decir, un uno seguido de nueve ceros.
Si nacieras el 24 de enero de 2015 a las 22:00 (10:00:00 p. m.), entonces cumplirías un gigasegundo el 2 de octubre de 2046 a las 23:46:40 (11:46:40 p. m.).
bash no tiene ninguna forma integrada de parsear strings de fecha y hora.
Este ejercicio requiere que llames a una utilidad externa.
-d del comando date de GNU puede parsear una amplia variedad de formatos.date de BSD y su opción -f.Time::Piece se puede usar para parsear marcas de tiempo.bash puede formatear fechas sin ninguna herramienta externa.
Dado un valor de tiempo entero (segundos desde la época), el formateador %()T de printf puede aplicar un formato estilo «strftime».
epoch=1234567890
printf '%(%Y-%m-%d %H:%M:%S)T\n' "$epoch"
# ==> 2009-02-13 18:31:30
# bash uses the `TZ` environment variable for the timezone.
TZ=Asia/Kolkata printf '%(%Y-%m-%d %H:%M:%S)T\n' "$epoch"
# ==> 2009-02-14 05:01:30
Regístrate en Exercism para aprender y dominar Bash con 97 ejercicios y mentoría humana real, todo gratis.