Por que a Saída de uma Fórmula do Notion Mostra um Fuso Horário Diferente da Data de Origem
🔍 WiseChecker

Por que a Saída de uma Fórmula do Notion Mostra um Fuso Horário Diferente da Data de Origem

Você tem uma propriedade de data em um banco de dados do Notion que mostra o horário local correto, mas uma fórmula que referencia essa data exibe um offset de fuso horário diferente. Essa discrepância causa confusão quando você precisa de timestamps consistentes para relatórios, prazos ou agendamento de eventos. A causa raiz é como o Notion armazena internamente e depois formata as datas quando uma fórmula as processa. Este artigo explica por que a mudança de fuso horário ocorre e fornece os ajustes exatos de fórmula para manter o fuso horário de saída consistente com a data de origem.

Principais Conclusões: Corrigindo a Inconsistência de Fuso Horário em Fórmulas do Notion

  • formatDate() com parâmetro de fuso horário: Adicione a string de fuso horário IANA correta como segundo argumento para forçar a fórmula a exibir o mesmo offset da data de origem.
  • Solução alternativa com fromTimestamp() e toNumber(): Converta a data para um timestamp Unix e depois de volta para uma data com um fuso horário explícito para substituir a saída UTC padrão.
  • Configuração de fuso horário do workspace: Alterar o fuso horário do workspace em Configurações e Membros > Configurações > Workspace afeta apenas novas entradas de data, não saídas de fórmulas existentes.

ADVERTISEMENT

Por que as Fórmulas do Notion Exibem um Fuso Horário Diferente

O Notion armazena todos os valores de data internamente como timestamps UTC. Quando você cria uma propriedade de data e insere um horário, o Notion converte esse horário local para UTC antes de salvá-lo. Quando uma fórmula lê essa propriedade de data, ela recupera o valor UTC e então aplica suas próprias regras de formatação. Por padrão, as fórmulas do Notion exibem datas no fuso horário UTC, a menos que você instrua explicitamente a fórmula a usar um fuso horário diferente. É por isso que a propriedade de data de origem mostra seu horário local, mas a fórmula mostra um horário deslocado.

A propriedade de data de origem usa a configuração de fuso horário do seu workspace ou o fuso horário local do seu navegador para exibir a data. As fórmulas não herdam essa configuração automaticamente. A função formatDate() no Notion aceita um parâmetro opcional de fuso horário. Se você omitir esse parâmetro, a fórmula usa UTC como padrão. O resultado é um horário que pode estar várias horas adiantado ou atrasado em relação à entrada original.

Como o Notion Lida com Fusos Horários Internamente

Quando você digita uma data em uma propriedade de data, o Notion captura o horário local do seu relógio do sistema. Ele então converte esse horário para UTC usando o offset do seu fuso horário atual. Por exemplo, se você está em Nova York (Horário de Verão do Leste, UTC-4) e insere 15:00, o Notion armazena 19:00 UTC. A propriedade de data exibe 15:00 porque conhece o fuso horário do seu workspace. A fórmula, no entanto, vê 19:00 UTC e exibe esse valor a menos que você intervenha.

O Papel da Configuração de Fuso Horário do Workspace

Você pode definir um fuso horário padrão para seu workspace em Configurações e Membros > Configurações > Workspace. Essa configuração controla como novas propriedades de data exibem seus valores. Ela não altera como fórmulas existentes formatam sua saída. Alterar o fuso horário do workspace após as datas terem sido inseridas atualizará a exibição dessas propriedades de data, mas as fórmulas ainda precisarão de instruções explícitas de fuso horário para corresponder.

Passos para Corrigir a Inconsistência de Fuso Horário em uma Fórmula

Você pode corrigir o offset de fuso horário adicionando o parâmetro de fuso horário à função formatDate() em sua fórmula. Siga estes passos para atualizar uma fórmula existente.

  1. Abra o editor de propriedades do banco de dados
    Navegue até o banco de dados que contém a propriedade de fórmula. Clique no nome da propriedade no topo da coluna e selecione “Editar propriedade” no menu suspenso.
  2. Localize o campo de fórmula
    No editor de propriedades, encontre o tipo de propriedade Fórmula. Clique no botão “Editar fórmula” para abrir a janela do editor de fórmulas.
  3. Adicione o parâmetro de fuso horário ao formatDate()
    Se sua fórmula atual usa formatDate(prop("Data"), "MMM D, YYYY h:mm A"), altere para formatDate(prop("Data"), "MMM D, YYYY h:mm A", "America/Sao_Paulo"). Substitua "America/Sao_Paulo" pela sua string de fuso horário IANA. Valores comuns são "America/New_York", "America/Chicago", "America/Denver", "America/Los_Angeles", "Europe/London", "Europe/Berlin", "Asia/Tokyo" e "Australia/Sydney".
  4. Teste a saída da fórmula
    Clique em “Salvar” e verifique a coluna de fórmula. O horário exibido agora deve corresponder à propriedade de data de origem. Se não corresponder, verifique se a string de fuso horário está correta e se a propriedade de data de origem inclui um componente de horário.
  5. Repita para todas as fórmulas afetadas
    Aplique o mesmo parâmetro de fuso horário a todas as fórmulas que referenciam uma propriedade de data. Cada fórmula que não tiver o parâmetro continuará exibindo UTC.

Usando fromTimestamp() como Alternativa

Se você preferir não usar formatDate(), pode converter a data em um timestamp Unix e depois de volta para uma data com um fuso horário explícito. Este método é útil quando você precisa realizar operações aritméticas com datas antes de formatar.

  1. Converta a data de origem em um número
    Use toNumber(prop("Data")) para obter o timestamp Unix da data de origem. Esse valor está sempre em UTC.
  2. Adicione o offset de fuso horário
    Adicione ou subtraia o offset do seu fuso horário. Para o Horário de Verão do Leste (UTC-4), adicione -14400 segundos (4 horas * 3600). Para o Horário Padrão do Leste (UTC-5), adicione -18000.
  3. Converta de volta para uma data formatada
    Use formatDate(fromTimestamp(timestampAjustado), "MMM D, YYYY h:mm A"). Isso força a fórmula a tratar o timestamp ajustado como horário local.

ADVERTISEMENT

Se o Notion Ainda Mostrar o Fuso Horário Errado Após a Correção

A Fórmula Ainda Exibe UTC Mesmo Após Adicionar o Parâmetro de Fuso Horário

Isso geralmente acontece quando a string de fuso horário está escrita incorretamente ou não é reconhecida pelo Notion. Verifique novamente a string de fuso horário IANA. Use uma string válida conhecida, como "America/New_York". Se a string for inválida, o Notion silenciosamente volta para UTC. A função formatDate() não retorna um erro para um fuso horário inválido; ela simplesmente o ignora.

A Propriedade de Data de Origem Não Inclui um Horário

Se a propriedade de data de origem estiver configurada como “Apenas data” (sem componente de horário), o Notion assume meia-noite UTC para essa data. A fórmula exibirá meia-noite no fuso horário especificado, o que pode aparecer como o dia anterior em alguns fusos horários. Para corrigir isso, altere a propriedade de data para incluir um horário. Abra as configurações da propriedade de data e ative “Incluir um horário”. Em seguida, reinsira a data com o horário local correto.

A Saída da Fórmula Muda Quando Visualizada em um Dispositivo Diferente

As fórmulas do Notion que usam formatDate() com um parâmetro de fuso horário são avaliadas no servidor. A saída é a mesma para todos os visualizadores, independentemente do fuso horário local deles. Se você vir horários diferentes em dispositivos diferentes, a fórmula provavelmente está sem o parâmetro de fuso horário, e cada navegador está aplicando seu próprio offset local. Adicione a string de fuso horário explícita à fórmula para tornar a saída consistente.

Funções de Data em Fórmulas do Notion: Comportamento Com e Sem Fuso Horário

Função Sem Parâmetro de Fuso Horário Com Parâmetro de Fuso Horário
formatDate() Exibe a data em UTC Exibe a data no fuso horário IANA especificado
dateAdd() Adiciona dias/horas em UTC Adiciona dias/horas no fuso horário especificado (ciente de horário de verão)
dateSubtract() Subtrai em UTC Subtrai no fuso horário especificado
now() Retorna o timestamp UTC atual Não aplicável — now() não aceita parâmetro de fuso horário
fromTimestamp() Converte timestamp UTC em um objeto de data Não aceita parâmetro de fuso horário — use formatDate() no resultado

Agora você pode alinhar o fuso horário de qualquer saída de fórmula com a propriedade de data de origem. O passo principal é adicionar a string de fuso horário IANA correta a cada chamada de formatDate(). Para fórmulas que realizam cálculos com datas, use dateAdd() ou dateSubtract() com o parâmetro de fuso horário para manter os ajustes de horário de verão precisos. Como dica avançada, crie uma propriedade de fórmula que armazene a string de fuso horário como uma variável usando lets() para que você só precise atualizar a string em um lugar se seu fuso horário mudar.

ADVERTISEMENT