A forma como medimos o tempo é um bocado confusa. Um minuto tem 60 segundos e uma hora tem 60 minutos. Isto vem da antiga Babilónia, onde o 60 era a base do sistema de numeração. Um dia tem 24 horas, uma semana tem 7 dias, e quantos dias tem um mês? Bom, o número de dias de um mês depende não só do mês em questão, mas também do tipo de calendário usado no país onde vives.
E se, em vez disso, usássemos apenas segundos para expressar intervalos de tempo? Assim, podemos usar os prefixos do sistema métrico para escrever grandes números de segundos em quantidades mais fáceis de compreender.
Se algum dia colonizarmos Marte ou outro planeta qualquer, medir o tempo vai ficar ainda mais confuso. Quando alguém diz «ano», está a referir-se a um ano na Terra ou a um ano em Marte?
A ideia para este 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.
A tua tarefa é determinar a data e a hora um gigassegundo depois de uma determinada data.
Um gigassegundo é mil milhões de segundos. Ou seja, é o número um seguido de nove zeros.
Se tivesses nascido a 24 de janeiro de 2015, às 22:00 (10:00:00 da noite), a 2 de outubro de 2046, às 23:46:40 (11:46:40 da noite), terias um gigassegundo de idade.
O bash não tem formas integradas de analisar strings de data e hora.
Este exercício obriga-te a recorrer a um utilitário externo.
-d do comando date do GNU consegue analisar uma grande variedade de formatos.date do BSD e a sua opção -f.Time::Piece pode ser usado para analisar timestamps.O bash consegue formatar datas sem ferramentas externas.
Dado um valor de tempo inteiro (segundos desde a época), o formatador %()T do printf consegue aplicar formatação ao 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
Inscreve-te no Exercism para aprenderes e dominares Bash com 97 exercícios, e mentoria humana real, tudo grátis.