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 código é lido com mais frequência do que escrito, e ler um número grande/longo no meio de outro texto pode ser um desafio. Veja duas abordagens para deixar os números mais legíveis:
Usar sublinhados em literais numéricos. 1_000_000 é mais legível que 1000000, e 10_100_201_330 é mais fácil de ler de relance que 10100201330. Para mais informações, veja PEP-0515.
Usar notação exponencial ou notação científica. O caractere e (ou E) seguido de um número inteiro representa a potência de 10 pela qual o número que vem antes do e deve ser multiplicado (ou seja: 1e6, o 1 é multiplicado por 10 elevado à potência de 6, o que dá 1000000). Para mais detalhes, confira esta referência sobre notação científica.
Este exercício explora objetos do módulo datetime do Python:
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.