Fuso horário no Linux: como mudar na VPS com timedatectl
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

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 emno.
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.