Base de Conhecimento

Fuso horário no Linux: como mudar na VPS com timedatectl

  • fuso horário, timedatectl, linux, vps, ubuntu, terminal
  • Usuários acharam útil: 0

Veja como ver e mudar o fuso horário na VPS com o timedatectl: achar o nome do fuso, conferir a sincronização, usar a variável TZ e o que muda no MySQL e no PHP.

Por Redação Eleven Host · @robson.direitodigital · 30 de outubro de 2026 · 8 min de leitura

Arte da Eleven Host: janela de terminal com o título: Fuso horário no Linux: como mudar na VPS com timedatectl

Capa da Redação Eleven Host para o guia: Fuso horário no Linux: como mudar na VPS com timedatectl Arte: Eleven Host

Para ver o fuso horário no Linux, rode timedatectl: ele mostra a hora local, a hora UTC e o fuso configurado. Para mudar para o horário de Brasília, use sudo timedatectl set-timezone America/Sao_Paulo.

Se você administra uma VPS por SSH, pode precisar conferir ou mudar o fuso do servidor. Este guia mostra como ler o status, achar o nome do fuso, mudá-lo, conferir a sincronização de horário e usar um fuso só em um comando. Os fatos vêm das páginas de manual do Ubuntu 24.04 (systemd 255), da documentação do Ubuntu Server, do MySQL 8.4 e do PHP. Os nomes de fuso e de arquivo seguem esses manuais.

Ver a hora e o fuso atuais

O comando para olhar é o timedatectl, que equivale a timedatectl status. Segundo o manual, ele mostra as configurações atuais do relógio do sistema e do RTC, incluindo se a sincronização de horário pela rede está ativa:

timedatectl

O exemplo abaixo é o que o próprio manual mostra. É uma saída ilustrativa, de 2017 e com outro fuso (Europe/Warsaw): na sua VPS, os valores serão os seus. Vale pelo formato:

Local time: Thu 2017-09-21 16:08:56 CEST

Universal time: Thu 2017-09-21 14:08:56 UTC

RTC time: Thu 2017-09-21 14:08:56

Time zone: Europe/Warsaw (CEST, +0200)

System clock synchronized: yes

NTP service: active

RTC in local TZ: no

Como ler cada linha

  • Local time: a hora no fuso configurado.
  • Universal time: a hora em UTC.
  • RTC time: o relógio de hardware.
  • Time zone: o nome do fuso, a sigla e a diferença para o UTC.
  • System clock synchronized: se o relógio está sincronizado.
  • NTP service: se a sincronização em rede está ativa.
  • RTC in local TZ: se o relógio de hardware guarda a hora local. O manual trata esse modo como not fully supported, então deixe em no.

Existe também o timedatectl show, que traz a mesma informação em formato de máquina, o que facilita o uso em scripts.

Achar o nome do fuso

O list-timezones lista os fusos disponíveis, um por linha. Para achar o seu, filtre com o grep. Para o horário de Brasília:

timedatectl list-timezones | grep America/Sao

O nome que interessa é America/Sao_Paulo. Se quiser mais detalhes do filtro, o grep procura o texto que você informar em cada linha da lista.

Mudar o fuso com set-timezone

O set-timezone define o fuso do sistema com o valor informado. Mudanças desse tipo são operações privilegiadas, e o manual cita o uso com sudo, que é o que se faz na VPS. Depois, confira com o timedatectl e com o date:

sudo timedatectl set-timezone America/Sao_Paulo

timedatectl

date

Na linha Time zone, o novo nome deve aparecer. O comando date mostra a hora já no fuso novo.

O arquivo /etc/localtime

Por baixo, o fuso do sistema fica no arquivo /etc/localtime. Segundo o manual, ele configura o fuso de todo o sistema e deve ser um link simbólico para /usr/share/zoneinfo/ seguido do nome do fuso. O nome é tirado do destino do link, por isso o arquivo não pode ser um arquivo comum nem um hardlink. Se o arquivo não existir, o sistema usa UTC. Para ver para onde ele aponta:

ls -l /etc/localtime

Para trocar o fuso, o manual indica o timedatectl.

Quer conhecer a VPS da Eleven Host? O Plano Bronze da VPS sai a partir de R$ 17,00/mês; confira na loja o que cada plano inclui. Ver planos de VPS

Conferir a sincronização do horário

O set-ntp controla se a sincronização pela rede está ativa, e o timesync-status mostra o status do serviço systemd-timesyncd:

sudo timedatectl set-ntp true

timedatectl timesync-status

Com a opção --monitor, o timesync-status acompanha a mudança ao vivo. O show-timesync traz a mesma informação em formato de máquina.

timesyncd e chrony no Ubuntu

A documentação do Ubuntu Server diz que o systemd-timesyncd fazia parte da instalação padrão e foi substituído pelo chrony desde o Ubuntu 25.10. O manual do timedatectl do Ubuntu 24.04 descreve o timesync-status para o systemd-timesyncd. A página do Ubuntu Server também diz que, se o chrony estiver instalado, o timedatectl dá um passo atrás para deixar o chrony cuidar do horário.

Para ver o serviço, use o timedatectl status ou o systemctl status systemd-timesyncd. Os comandos do systemctl estão no guia systemctl: como iniciar, parar e ver serviços na VPS. Os servidores de horário ficam no arquivo /etc/systemd/timesyncd.conf, nas linhas NTP= e FallbackNTP=, com listas separadas por espaço:

NTP=ntp.example.com

FallbackNTP=ntp2.example.com

Os nomes acima são fictícios, só para mostrar o formato.

Acertar o relógio na mão

O set-time acerta o relógio manualmente e atualiza o RTC. Fica como opção do manual.

Usar um fuso só em um comando ou sessão: a variável TZ

Dá para usar um fuso sem mudar o do servidor. Segundo o manual do tzset, se a variável TZ não aparecer no ambiente, o sistema usa o fuso do sistema. O formato é dois-pontos seguido do nome, relativo a /usr/share/zoneinfo; o exemplo do manual é TZ=":Pacific/Auckland". Para um comando só:

TZ=":America/Sao_Paulo" date

TZ=":UTC" date

O fuso do servidor não muda por causa disso.

O que muda em outros programas

Abaixo vai o que a documentação do MySQL e a do PHP dizem, e este guia fica só no que está escrito nelas.

MySQL

Segundo o manual do MySQL 8.4, na inicialização o servidor descobre o fuso da máquina e o grava na variável system_time_zone. A variável time_zone começa como 'SYSTEM', que significa usar o fuso do sistema. Se o arquivo /etc/localtime for trocado por regras diferentes das que valiam quando o mysqld subiu, o manual manda reiniciar o mysqld para ele usar as regras novas.

O fuso também pode ser definido no próprio MySQL, por sessão ou global, ou no arquivo de opções:

SET time_zone = '-03:00';

SET GLOBAL time_zone = '-03:00';

No arquivo de opções, o parâmetro é default-time-zone. Usar o nome ('America/Sao_Paulo') só funciona com as tabelas de fuso carregadas no MySQL; sem elas, o erro é ERROR 1298 (HY000): Unknown or incorrect time zone. O manual mostra o comando para carregá-las:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

O fuso da sessão afeta o NOW() e as colunas TIMESTAMP, que o MySQL guarda em UTC. Não afeta colunas DATETIME. Se ainda precisa instalar o banco, o guia Instalar MySQL no Ubuntu: passo a passo na VPS cobre a instalação.

PHP

O PHP segue outra regra. Segundo o manual, o padrão da diretiva date.timezone é "UTC". O PHP usa primeiro o valor de date_default_timezone_set(), depois o de date.timezone, e, se nada estiver definido, o UTC. Por essa regra, o PHP não segue o fuso do sistema: defina o fuso no php.ini.

date.timezone = America/Sao_Paulo

O PHP tem o próprio date.timezone, com padrão UTC, e o manual do MySQL manda reiniciar o mysqld quando o /etc/localtime muda para regras diferentes.

Horário de verão no Brasil

O Decreto nº 9.772, de 25 de abril de 2019, encerrou a hora de verão no território nacional, segundo o Ministério de Minas e Energia e a Secom. Em checagem publicada pela Secom em 3 de outubro de 2025 e atualizada em 27 de outubro de 2026, o governo diz que é falso que tenha decidido adotar o horário de verão, e o Ministério de Minas e Energia continuará avaliando periodicamente a adoção.

Com a regra atual, o fuso America/Sao_Paulo fica o ano todo em UTC-3. Este guia não faz previsão sobre mudanças; se o assunto importar para você, consulte a fonte oficial.

Comandos para guardar

  • timedatectl: hora, fuso e estado da sincronização.
  • timedatectl show: a mesma informação em formato de máquina.
  • timedatectl list-timezones | grep America/Sao: acha o nome do fuso.
  • sudo timedatectl set-timezone America/Sao_Paulo: muda o fuso do sistema.
  • ls -l /etc/localtime: mostra para onde o fuso aponta.
  • sudo timedatectl set-ntp true: liga a sincronização em rede.
  • timedatectl timesync-status: status do systemd-timesyncd.
  • TZ=":America/Sao_Paulo" date: um fuso só para um comando.
  • date.timezone = America/Sao_Paulo: o fuso do PHP, no php.ini.

Quer ver os planos de VPS da Eleven Host? A VPS sai a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Conhecer a VPS

Perguntas frequentes

Como ver o fuso horário no Linux?

Rode timedatectl. A linha Time zone mostra o nome do fuso, a sigla e a diferença para o UTC.

Como mudar o fuso horário na VPS?

Use sudo timedatectl set-timezone America/Sao_Paulo e confira com timedatectl. Para achar outro nome, use timedatectl list-timezones | grep com o texto que procura.

Preciso reiniciar o servidor depois de mudar o fuso?

As fontes consultadas só indicam reinício no caso do MySQL, quando o /etc/localtime muda para regras diferentes das que valiam quando o mysqld subiu. Para os outros programas, a documentação citada aqui não diz.

Dá para usar outro fuso só em um comando?

Dá, com a variável TZ, como em TZ=":America/Sao_Paulo" date. O fuso do servidor não muda.

O Brasil tem horário de verão?

O Decreto nº 9.772, de 25 de abril de 2019, encerrou a hora de verão. A checagem da Secom atualizada em 27 de outubro de 2026 diz que o governo não decidiu adotá-la.

Esta resposta lhe foi útil?

Artigos Relacionados