A forma como medimos o tempo é meio bagunçada. Temos 60 segundos em um minuto e 60 minutos em uma hora. Isso vem da antiga Babilônia, onde o 60 era a base do sistema numérico deles. Temos 24 horas em um dia, 7 dias em uma semana, e quantos dias em um mês? Bem, a quantidade de dias em um mês depende não só de qual mês é, mas também do tipo de calendário usado no país em que você vive.
E se, em vez disso, usássemos apenas segundos para expressar intervalos de tempo? Aí podemos usar os prefixos do sistema métrico para escrever grandes quantidades de segundos em valores mais fáceis de compreender.
Se algum dia colonizarmos Marte ou algum outro planeta, medir o tempo vai ficar ainda mais bagunçado. Quando alguém diz "ano", está falando de um ano na Terra ou de um ano em Marte?
A ideia deste exercício veio do romance de ficção científica "A Deepness in the Sky", do autor Vernor Vinge. Nele, o autor usa o sistema métrico como base para medir o tempo.
Sua tarefa é determinar a data e a hora um gigassegundo depois de uma certa data.
Um gigassegundo é um bilhão de segundos. Ou seja, um 1 seguido de nove zeros.
Se você nasceu em 24 de janeiro de 2015 às 22:00 (10:00:00pm), você completaria um gigassegundo de vida em 2 de outubro de 2046 às 23:46:40 (11:46:40pm).
O bash não tem nenhuma forma nativa de interpretar strings de data e hora.
Este exercício exige que você chame um utilitário externo.
-d do comando date do GNU consegue interpretar uma grande variedade de formatos.date do BSD e a opção -f dele.Time::Piece dele pode ser usado para interpretar timestamps.O bash consegue formatar datas sem nenhuma ferramenta externa.
Dado um valor de tempo inteiro (segundos desde a epoch), o formatador %()T do printf consegue aplicar uma formatação no 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
Crie sua conta no Exercism para aprender e dominar Bash com 97 exercícios e mentoria humana de verdade, tudo de graça.