Skip to content

Como ajustar o timezone nas aplicações

Os servidores devem esta com timezone UTC e as aplicações devem ter a opção de definir os seus timzones. Pode ser utilizado o TZ como variável global no ambiente ou indivialmente por aplicação. Lembrando que as aplicações estão sendo nacionalizadas.

Opção 1 - TZ

Configurar a aplicação para utilizar o TZ + Utilizar a variável TZ na env da aplicação e instalar o pacote tzdata

TZ=America/Fortaleza + Segue exemplo de instalação via Dockerfile para Alpine linux. Ulilizar no 2º Stage:

# 2º Stage
FROM registry.geomk.com.br/python_geomk/3.6-prd
ENV PYTHONUNBUFFERED 1
ENV VERSION v1.12.4
# Packages required

RUN apk update && \
    apk add --no-cache \
        pcre \
        libjpeg \
        tzdata
  • Desta forma o shell do Linux dentro do container apresentará a data e hora alinhados com o TZ declarado.

Opção 2 - Data no Python

  • Muita atenção com o datetime e como ele pode ser importado e que retornos podem ser obtidos (Timezone ou UTC)
# python manage.py shell
>>> from django.utils.timezone import datetime
>>> datetime.now()
datetime.datetime(2019, 9, 5, 23, 55, 55, 839345)
>>> from django.utils import timezone
>>> timezone.now()
datetime.datetime(2019, 9, 5, 16, 56, 53, 941555, tzinfo=<UTC>)
>>> timezone.datetime.now()
datetime.datetime(2019, 9, 5, 23, 57, 2, 783737)
# python manage.py shell
>>> from utils.time import normalize
>>> from django.utils import timezone
>>> normalize(timezone.now())