4 pontos por GN⁺ 2023-11-12 | 1 comentários | Compartilhar no WhatsApp
  • O timestamp Unix entrar na faixa de 1,7 bilhão significa que os segundos acumulados desde 1º de janeiro de 1970 UTC chegaram a esse patamar, com um valor de exemplo mostrado como 1782553539
  • A ferramenta de conversão transforma o timestamp em GMT, fuso horário do usuário e tempo relativo, com suporte a unidades de segundo, milissegundo, microssegundo e nanossegundo
  • O mesmo instante também é exibido em ISO 8601 e em vários formatos RFC, facilitando verificar diferenças na representação de datas entre sistemas
  • Como o timestamp Unix aponta para o mesmo momento independentemente da localização, ele é útil para rastreamento e ordenação de informações de data em aplicações distribuídas
  • Em 19 de janeiro de 2038, o overflow de 32 bits se tornará um problema, então as aplicações precisarão adotar novas convenções de timestamp ou migrar para sistemas de 64 bits

Referência do timestamp Unix e como funciona a conversão

  • O timestamp Unix trata o tempo como um valor acumulado em segundos
    • O ponto de referência é o Unix Epoch de 1º de janeiro de 1970 UTC
    • O número de segundos transcorridos entre uma data específica e o Unix Epoch se torna o valor do timestamp
    • Esse valor aponta para o mesmo instante, não importa onde o usuário esteja na Terra
  • A ferramenta de conversão da página aceita tanto entrada de timestamp quanto de data/hora
    • O timestamp pode ser informado em segundos, milissegundos, microssegundos e nanossegundos
    • A data/hora pode ser convertida em timestamp Unix informando ano, mês, dia, hora no formato de 24 horas, minuto e segundo
    • O resultado pode ser visto nos formatos GMT, fuso horário do usuário e tempo relativo

Formatos de data e hora padrão exibidos em conjunto

  • O exemplo atual de epoch também é fornecido em vários formatos de data e hora padronizados

Conversão de unidades de tempo e o problema de 2038

  • A página mostra a conversão de unidades de tempo legíveis por humanos para o número de segundos do timestamp Unix
    • 1 hora: 3600 segundos
    • 1 dia: 86400 segundos
    • 1 semana: 604800 segundos
    • 1 mês, com base em 30,44 dias: 2629743 segundos
    • 1 ano, com base em 365,24 dias: 31556926 segundos
  • Em 19 de janeiro de 2038, o timestamp Unix deixará de funcionar por causa do overflow de 32 bits
    • Antes disso, milhões de aplicações precisarão adotar novas convenções de timestamp
    • Ou migrar para sistemas de 64 bits para estender ainda mais o período de uso dos timestamps

1 comentários

 
GN⁺ 2023-11-12
Opiniões do Hacker News
  • 100 milhões de segundos passam rápido demais
    Para referência, a primeira página do New York Times no momento do Unix timestamp 1600000034 era esta:
    https://web.archive.org/web/20200913122714/https://www.nytim...
    E nos momentos 1500000301, 1400000634 e 1300007806, respectivamente, eram estas:
    https://web.archive.org/web/20170714024501/http://www.nytime...
    https://web.archive.org/web/20140513170354/http://www.nytime...
    https://web.archive.org/web/20110313091646/http://www.nytime...

    • São 3,17 anos
  • O Unix timestamp 1 600 000 000 também não foi há tanto tempo assim: foi em 2020-09-13 12:26:40 UTC
    A discussão no HN na época está aqui: https://news.ycombinator.com/item?id=24452885
    Meu post no blog comemorando esse evento está aqui: https://susam.net/maze/unix-timestamp-1600000000.html
    Como 100 000 000 segundos são cerca de 3 anos e 2 meses, acabamos vendo eventos assim uma vez a cada poucos anos
    Acho que o evento mais espetacular ainda está a 9 anos e meio de distância: o Unix timestamp 2 000 000 000: 2033-05-18 03:33:20 UTC. Algo assim só acontece aproximadamente uma vez a cada 33 anos e 8 meses
    Em Python, 1700000000 aparece assim:
    $ python3 -q

    from datetime import datetime
    datetime.utcfromtimestamp(1_700_000_000)
    datetime.datetime(2023, 11, 14, 22, 13, 20)

    GNU date (Linux):
    $ date -ud @1700000000
    Tue Nov 14 22:13:20 UTC 2023
    BSD date (macOS, FreeBSD, OpenBSD etc.):
    $ date -ur 1700000000
    Tue 14 Nov 2023 22:13:20 UTC

    • 33 anos! No fim dos anos 90, eu passava o tempo jogando MUD e, por algum motivo, havia muitos arquivos salvos que usavam epoch timestamp como nome de arquivo
      Quando fiquei responsável por parte do codebase, lidei bastante com esses arquivos, e todos eram números na faixa de 800 a 900 milhões
      Em certo momento, só de ver números nessa faixa eu já tinha uma noção imediata, com margem de erro de poucas semanas, de que ano e mês eram
      Ambientes estranhos desenvolvem superpoderes estranhos
      [0] https://en.wikipedia.org/wiki/Multi-user_dungeon
    • Um evento ainda mais espetacular será em janeiro de 2038, quando chegar ao número redondo 2.147.483.648
    • Acho 2222222222 mais especial: Sat Jun 02 2040 03:57:02 GMT+0000
      Com sorte, talvez eu também veja 3333333333 pessoalmente. Vai ser um grande dia
  • É o momento perfeito para abrir https://datetime.store/ e tentar pegar a camiseta perfeita

    • Esse site deve cair bonito na terça…
      “Chefe! Estamos sofrendo um DDoS!”
      “Não, meu jovem, é só terça-feira”
    • Dá para usar algo como um relógio da morte, que calcula estatisticamente quando você vai morrer
      Fico curioso se também dá para achar uma camiseta com essa hora estampada
    • Isso me lembrou uma ideia de caneca de café 1BTC que eu tive antigamente. Foi no comecinho, quando o Bitcoin estava subindo para 20 mil dólares pela primeira vez
  • Fiquei acordado até tarde para ver a virada de 999.999.999 para 1 bilhão e pensei: “vou lembrar desta semana para o resto da vida”
    Eu não imaginava que, 60 horas depois, o mundo inteiro se lembraria daquela semana

    • O timestamp 1000000000 (Sat 2001-09-08 18:46:40 PDT) causou um bug no sistema de relatórios de bugs Remedy que usávamos na época
      O sistema armazenava os segundos desde a epoch como string, assumindo que caberia em 9 dígitos
      Quando chegou a 1000000000, começou a cortar o último dígito e, por isso, voltou para Sat 1973-03-03 01:46:40 PST, avançando a 10% da velocidade do tempo real. Foi corrigido bem rápido
    • Eu não lembrava que tinha sido tão perto, mas naquela época eu lia o Slashdot obsessivamente, e ele também ajudou no 11 de setembro
      O evento da epoch certamente deve ter sido coberto lá
  • Em 2009, fui a um encontro do 1234567890 realizado no lobby de um hotel em Boston

    • Eu estava no turno da noite no trading floor de um grande banco
      O líder da equipe de suporte técnico de derivativos avisou que o momento estava chegando, então abri um shell e rodei o comando watch junto com o comando date, que imprimia os segundos da epoch, para observar aquele instante
      Depois voltei ao trabalho
    • Eu me lembro desse momento! Na época eu estava em algum lugar tipo um bar, mas tinha me preparado e estava com o notebook
      Para não perder, fiquei apertando seta para cima e Enter sem parar
  • Uma das minhas partes favoritas de A Deepness in the Sky, de Vinge, é o uso de tempo decimal: unidades como ksec e Msec
    Há uma escala logarítmica bacana mostrando a conversão entre o tempo da Terra e o tempo decimal

    • Sim! Graças a esse livro, agora sei sem precisar consultar que um ksec é mais ou menos 15 minutos e que um Msec é cerca de 2 semanas
      Isso é mais útil do que parece para fazer contas aproximadas
      Eu já sabia, pela observação de Tom Duff, que um Gsec é mais ou menos um terço de século
      Não acho que vamos migrar em massa para um sistema desses tão cedo. Unidades ligadas ao ritmo biológico são convenientes demais
      Ainda assim, quando se fala de humanos no espaço, é um pouco surpreendente que isso não apareça com mais frequência
      [0] "How many seconds are there in a year? If I tell you there are 3.155 x 10^7, you won't even try to remember it. On the other hand, who could forget that, to within half a percent, pi seconds is a nanocentury." --Tom Duff
    • Os arqueólogos de software desse livro achavam, equivocadamente, que a epoch de time_t não era simplesmente 1970, mas sim a chegada à Lua :)
    • Os Emergents também eram ótimos. Era um mundo em que progressistas libertários criaram uma utopia, com 100% de emprego e palácios de diamante para todos
  • Faltam 5.148 dias até 19 de janeiro de 2038
    Se eu viver até lá, o dia seguinte será meu 65º aniversário. Vou chegar bem a tempo do Armagedom digital

  • Faz mais sentido comemorar o momento em que um bit de posição relativamente alta muda de 0 para 1 do que o instante em que a notação decimal muda

  • Gosto da unidade de 100 milhões de segundos
    É mais longa que um ano e mais curta que 10 anos. A era de 1,6e8 foi a pandemia. O que 1,7e8 trará?

  • Gosto de saber que outras pessoas também ficam empolgadas com esse tipo de coisa. Se você é fã de UNIX Timeval, vale experimentar esta ferramenta tf [1]
    Eu usei todos os dias, por 15 anos e meio, uma versão que um amigo fez em C/Lex/Yacc; depois portei para Golang + Homebrew para compartilhar a diversão
    [1] https://github.com/neomantra/tf
    brew tap neomantra/homebrew-tap
    brew install tf
    Ela imprime estes números redondos. Como o tf detecta automaticamente valores de 10 dígitos, comecei o seq por ali também

    for TV in $(seq -f %.f 1000000000 100000000 2000000000); do echo $TV $TV | tf -d ; done
    2001-09-08 18:46:40 1000000000
    2004-11-09 03:33:20 1100000000
    2008-01-10 13:20:00 1200000000
    2011-03-12 23:06:40 1300000000
    2014-05-13 09:53:20 1400000000
    2017-07-13 19:40:00 1500000000
    2020-09-13 05:26:40 1600000000
    2023-11-14 14:13:20 1700000000
    2027-01-15 00:00:00 1800000000
    2030-03-17 10:46:40 1900000000
    2033-05-17 20:33:20 2000000000
    Também há datas divertidas. -g detecta vários valores em uma linha, e -d inclui as datas
    echo 1234567890 __ 3141592653 | tf -gd
    2009-02-13 15:31:30 __ 2069-07-20 17:37:33
    Divirta-se. Espero que economize seu tempo na hora de descobrir horários!