Cursos Magento

Lidando com datas, fusos e configurações do Magento

, ,

Atualizado em 02 de fevereiro de 2022

Trabalhar com datas no Magento pode ser algo extremamente complicado e demorado. Principalmente se a sua loja possuí multi localizações, com diferentes timezones.

Homem segurando relógio pegando fogo

Recentemente, investi uma manhã inteira brigando com isso aqui no Magenteiro. Embora ainda não seja uma multi-loja, nem multi-locale, o horário do servidor não é o mesmo configurado no Magento, que por sua vez não é o mesmo configurado no banco de dados, e que por fim e mais importante, não é o mesmo dos meus alunos. Sem adicionar o fator do meu fuso, que é 13 horas a mais que no Brasil.

Já deu um nó?

Imagina agora, criar um módulo que faça algo automático envolvendo datas e horas?

Se você não passou por isso, um dia isso vai acontecer.

A solução Magento para lidar com Datas e horas

Depois de muito brigar com config.xml, e php.ini, percebi que sempre tinha alguma ponta solta.

O resumo da solução foi converter tudo para GMT.

Quando o assunto é adicionar tempo, remover tempo, lidar com validade envolvendo data e hora no Magento, a solução é converter tudo pra GMT e trabalhar em cima da data convertida.

Como converter

Para nossa sorte, o Magento já tem o model core/date que faz todo o trabalho sujo pra gente. Ele nos dá uma série de métodos muito bacanas para lidar com datas, e já contemplando as configurações da loja atual.

Vamos a alguns exemplos:

echo Mage::getModel('core/date')->date('d/m/Y H:i:s');
# retorna 22/10/2017 23:30:21 – veja php.net/date para mais detalhes

echo Mage::getModel('core/date')->timestamp();
# retorna o timestamp do timezone atual da loja – veja php.net/time para mais detalhes

echo Mage::getSingleton('core/date)->gmtTimestamp();
# retorna o timestamp da loja convertido para in GMT timezone, com base nas configurações da loja

echo Mage::getSingleton('core/date')->gmtTimestamp() + 86400 * 30;
# adiciona 30 dias no timestamp GMT da loja atual

Outros métodos podem ser encontrados em app/code/core/Mage/Core/Model/Date.php.

Magento Core Date Class

Configurações de Fuso no Magento

Lembre-se de configurar o website em questão com o fuso horário que deseja trabalhar.

Isto é feito em Sistema > Configurações> Geral > Opções de Idioma > Fuso horário (SELECT * FROM core_config_data WHERE path = 'general/locale/timezone';).

Configurações de Fuso no Magento

Outras fontes: StackOverflowMagePsycho

Foto principal via VisualHunt.


Gostou destas dicas? Comente, compartilhe, acrescente. É a única forma que tenho de saber que devo continuar.

Veja o Magenteiro também no Youtube e Facebook.

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-1/datas-fusos-e-configuracoes/"]