4 pontos por GN⁺ 2023-10-15 | 3 comentários | Compartilhar no WhatsApp
  • Os rótulos de data relativa na interface web parecem linguagem humana, mas muitas vezes não correspondem à forma como os usuários realmente pensam sobre datas
  • Para as pessoas, “yesterday” é o dia anterior ao de hoje, das 0h às 23h59, e não simplesmente “menos de 24 horas atrás”
  • Se cada implementação usa um critério diferente, até dentro do mesmo serviço a indicação de “yesterday” pode oscilar, reduzindo a confiabilidade na exibição de datas
  • Exibir há quantos dias algo aconteceu apenas com números, como em “12 days ago”, se distancia da percepção de tempo que as pessoas usam naturalmente
  • Como “last week/month/year” também cobre intervalos amplos e ambíguos, para itens mais antigos do que ontem é mais claro mostrar uma data específica

Por que rótulos de data relativa confundem

  • Expressões como “yesterday”, “2 days ago” e “a week ago” parecem formas humanas de expressar o tempo, mas não são precisas o bastante para determinar datas reais
  • Em especial, “yesterday” tem um significado claro para o usuário
    • significa o dia anterior ao de hoje
    • refere-se ao intervalo entre 0h e 23h59 desse dia anterior
    • é diferente de um cálculo de “menos de 24 horas”
  • Sistemas podem implementar “yesterday” de maneiras diferentes e, se a exibição variar até dentro do mesmo serviço, o usuário passa a confiar menos na informação de data

Para itens antigos, é melhor mostrar a data

  • Expressões como “12 days ago” não combinam bem com as unidades de tempo em que as pessoas normalmente pensam
  • “last week”, “last month” e “last year” também têm intervalos amplos, então a ambiguidade permanece
  • Para itens mais antigos do que ontem, exibir uma data específica em vez de uma expressão relativa é mais fácil de ler e de confiar

3 comentários

 
cosine20 2024-12-02

O próprio GitHub e o YouTube fazem isso, e eu realmente odeio esse jeito de mostrar como “há alguns meses”, “há alguns anos”. Como também foi dito nos comentários do HN abaixo, “há 1 ano” às vezes na verdade quer dizer 1 ano e meio, então fica muito ambíguo.

 
budlebee 2023-10-17

Concordo bastante com isso. Do ponto de vista de quem está criando, mostrar como há XX dias evita ter que se preocupar com formatos de data diferentes entre países, como AA.MM.DD ou mmddaaaa, mas eu prefiro que a data seja exibida em vez de algo como há XX dias.

 
GN⁺ 2023-10-15
Comentários do Hacker News
  • Em especial, a exibição de tempo relativo fica imprecisa demais
    No YouTube, “há 1 ano” pode ser qualquer coisa de 365 a 729 dias atrás
    Para saber qual de dois vídeos exibidos como “há 1 ano” é mais recente, é preciso abrir o vídeo de fato e ir até a descrição para ver a data

    • Parece que designers de UI se reuniram para fazer uma competição de microagressões de GUI para atormentar usuários, e a tendência de “há N dias” venceu e se espalhou everywhere
      Não quero fazer cálculo de datas de cabeça; basta mostrar um timestamp exato
      Em vez de descartar uma grande faixa de informação com algo como “há 1 ano”, deveriam mostrar a hora real
    • O mais engraçado é que cada site tem um critério de arredondamento diferente
      No YouTube, “há 1 ano” pode significar 365 a 729 dias atrás, mas em alguns sites significa 183 a 548 dias atrás, arredondando para o ano mais próximo; em outros, arredonda-se por mês até 11 meses e então 350 a 548 dias atrás vira “há 1 ano”
      Em outro lugar, com um critério como “dentro do último ano-calendário”, pode ir de 1 a 365 dias atrás até 364 a 729 dias atrás
    • Agora é outubro de 2023; um vídeo publicado em novembro de 2021 não deveria aparecer como “há 1 ano”, e sim como “há quase 2 anos
    • Mesmo sendo a mesma data, se o horário for mais tarde, arredonda para baixo
      Mesmo que um vídeo publicado em 14 de outubro de 2021 já tenha 2 anos, se ele foi enviado mais tarde naquele dia, ainda pode ser exibido como há 1 ano
    • Dá para reduzir a imprecisão evitando que o primeiro número seja 1 e trocando para uma unidade menor
      Por exemplo, mostrar até 120 segundos atrás, até 120 minutos atrás, até 48 horas atrás, até cerca de 61 dias atrás e, depois disso, até 24 meses atrás
      Datas relativas em listas costumam ser toleráveis, mas o problema de não serem atualizadas é muito mais irritante, e limitar apenas até “ontem” não resolve
  • Quero recomendar isso com ainda mais força
    Felizmente, muitas vezes o timestamp aparece em um tooltip
    Por exemplo, ao ver a versão de um pacote npm, aparece algo como “version 5.3.27 was released ‘about a year ago’”; dá vontade de perguntar se a pessoa estava em sã consciência
    Estou tentando entender a ordem de lançamento de pacotes antigos para montar uma combinação fixa de pacotes compatíveis, mas 20 pacotes consecutivos aparecem todos como “há cerca de 1 ano”, então preciso abrir o tooltip de cada um para confirmar qual é a versão mais recente
    Esse tipo de design passou do limite, e parece coisa do mesmo tipo de gente que cria ORMs que mapeiam nomes de tabelas irregulares no singular e no plural

    • De fato havia um tooltip também no YouTube
      Não sei por que eu não sabia disso, e é bem útil
    • Não é que não estejam em sã consciência; são só burros ou, sendo generoso, ignorantes a ponto de serem incompetentes
    • Pessoas que fazem esse tipo de coisa em ferramentas para desenvolvedores são criminalmente incompetentes
      O surpreendente é que essas pessoas não só ainda estão empregadas, como essa abordagem idiota se espalhou everywhere, do npm ao GitHub e ao CircleCI
  • Indo além, eu gostaria de eliminar completamente esses timestamps relativos arredondados
    O app Mail do iOS é especialmente irritante
    Ao abrir, ele mostra “atualizado agora há pouco”, mas, ao puxar para atualizar, aparece de repente um e-mail não lido recebido 2 horas antes
    Bastaria mostrar a hora exata em que foi atualizado

    • Os timestamps idiotas das notificações são ainda piores
      Se você não vê em menos de uma hora, eles ficam imprecisos na hora, e só aparece se foi “há 1 hora” ou “há 2 horas”
      Pode ser essencial saber exatamente quando uma notificação chegou, mas não há absolutamente nenhum jeito de verificar
      É só mostrar a hora; eu sei ler horas
    • Uma das vantagens do Thunderbird é que ele ainda mostra data e hora exatas
      Se for hoje, mostra só a hora; caso contrário, mostra a data e a hora completas
  • Ao usar tempos absolutos, o navegador pode exibir no formato preferido pelo usuário
    https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ti...

    • O sonho da web em que o servidor envia apenas os dados e o cliente escolhe a forma de exibição morreu completamente
      Web designers querem que o site tenha uma aparência específica até o nível do pixel, e o controle de exibição do lado do cliente atrapalha isso
      Ainda é possível fazer, mas os sites não serão projetados pensando nesse uso nem ajudarão ativamente nisso
    • Não sei como isso aparece de fato para um usuário comum
      No exemplo, a saída no iOS/Safari parece como se a tag não existisse
  • O que é especialmente inconveniente em datas vagas é quando o dia da semana é a informação mais importante
    Por exemplo, ao ver o histórico do GitLab, é muito mais útil saber se algo foi mesclado na sexta-feira do que “semana passada” ou “2 dias atrás”
    Em históricos de chat, se estiver perto da virada do mês, pode ser importante saber se a conversa foi antes ou depois do início do mês
    Mesmo nos outros casos, pessoalmente prefiro a data exata a saber se foi há 4 semanas ou há 2 meses, e fornecer a data exata não reduz a informação
    É difícil imaginar uma situação em que uma data vaga seja mais útil do que uma data exata

    • Sou membro da equipe do GitLab
      No GitLab, é possível alterar uma configuração para usar horários absolutos em vez de tempos relativos
      Ex.: October 14, 2023 11:51AM
      https://docs.gitlab.com/ee/user/profile/preferences.html#sho...
    • Criei um script Greasemonkey que troca os rótulos de tempo inúteis do Jira por datas completas com dia da semana
      Recomendo muito aplicar algo assim em softwares baseados em navegador que você usa com frequência
    • Em casos muito específicos, datas vagas podem ser úteis
      Existe uma aplicação que busca informações em outro banco de dados, reformata e mostra ao usuário; como a atualização é cara e demorada, o usuário precisa executá-la manualmente quando necessário
      Nesse caso, o horário exato da última atualização não importa muito; o importante é quão antigos estão os dados, ou seja, qual a chance de estarem divergentes da origem
      Algumas informações precisam ser atualizadas depois de apenas algumas horas, mas outras podem estar há mais de 4 ou 5 dias sem problema, sem necessidade de fazer uma atualização que leva até 10 minutos
      Para esse objetivo, mostrar a idade aproximada é mais útil do que mostrar o horário da última atualização, e o usuário não precisa calcular comparando com o horário atual
      Ainda assim, é um caso raro, e na maioria das vezes datas relativas vagas são menos úteis
    • Tempos relativos são úteis ao comunicar horários no futuro próximo para pessoas em vários fusos
      Algo como “termina cerca de 4–5 horas depois deste comentário” ou “foi corrigido e a próxima execução começa cerca de 15 horas depois deste comentário”
  • Entre os apps que uso e que mostram timestamps de forma errada, o pior é o gitg
    Basta ver este screenshot
    https://ubunlog.com/wp-content/uploads/2018/06/git-gui-gitg....
    Vários commits aparecem como “3 dias atrás”, o que é só um pouco melhor do que não ter informação nenhuma
    Não dá para saber se foi de manhã ou à tarde, se ficaram concentrados em uma hora ou espalhados ao longo do dia
    Quando não consigo registrar o tempo de trabalho de um cliente e preciso estimá-lo uma semana depois, esse tipo de informação é importante, então preciso clicar em cada commit e conferir o timestamp do outro lado da tela

    • O screenshot é um dos motivos importantes pelos quais mostrar a data completa é sempre necessário
    • O webmail do Outlook também é bem ruim
      Além de mostrar “alguns dias atrás”, ele tenta colocar no topo os itens que considera importantes
      Então aparecem duas listas parcialmente duplicadas misturadas, duplicando o horror
    • Timestamps do git são definidos no fuso horário local de cada desenvolvedor e não são verificados, então em desenvolvimento global isso pode ficar ainda mais difícil
      https://alesnosek.com/blog/2017/01/02/git-getting-the-timing...
    • É surpreendente que no gitg pareça não haver uma forma de configurar para sempre exibir data e hora completas
    • Se existisse um órgão regulador da indústria, o modo de exibição do screenshot seria candidato a violação de conduta profissional
  • Basta mostrar os dois
    “1 hora atrás (15:47)”
    “semana passada (MON 12 SEP 9:20)”
    “2 anos atrás (WED 14 APR 2021 11:47)”
    O formato da data fica a gosto

    • No frontend, foi útil renderizar tempo relativo na página e colocar o timestamp real ou o formato de data em um tooltip
      Quem quiser ver mais detalhes pode passar o mouse sobre a data relativa
    • Antigamente, colocávamos as informações exatas de hora e data em tooltips pensando que “os usuários que precisam conseguem encontrar sem sobrecarregar a UI”
      Alguns anos depois, entrevistas com usuários mostraram que só um sublinhado estilo hyperlink não faz o usuário pensar “devo passar o mouse aqui”, então desfizemos boa parte disso
      Agora que emojis e telas de alta resolução são comuns, fico curioso se dar uma dica de tooltip com um ponto de interrogação discreto ou uma imagem de lupa seria suficiente para usuários mais velhos ou menos experientes
    • Qual é o motivo para não simplesmente mostrar a data?
  • Também é preciso incluir o ano
    Já aconteceu vezes demais de um fórum na web mostrar a data de um comentário só como “5 Jul”, e só depois eu perceber que aquele comentário era de anos atrás
    Hoje já não confio mais em datas sem ano; se o ano não aparece de cara, dou um jeito de encontrá-lo

    • O ano deve ter 4 dígitos
      Frequento algumas vezes por semana um fórum que existe há 20–30 anos, e as datas aparecem como 08/11/02, 09/03/04, o que é muito confuso
  • “1 ano atrás” pode não ser preciso o suficiente, mas “11 meses atrás” geralmente é
    Ao implementar uma função desse tipo, costumo evitar o número 1
    Por exemplo, mostrar “6 dias atrás” em vez de “1 semana atrás”

  • Se for arquivado em lugares como Google ou web.archive.org, a menos que o rótulo seja calculado no lado do cliente, o tempo relativo pode acabar sendo baseado na data de indexação
    Em arquivos, é bem provável que o JavaScript também não funcione corretamente
    Para exibir datas de forma mais acessível, também vale considerar usar a tag time com o atributo datetime
    https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ti...
    Por enquanto, nos navegadores ela não é muito diferente de uma tag span, mas não há mal em tornar uma página web compatível com o futuro