Lidando com datas, fusos e configurações do Magento
Backend, Desenvolvimento, Magento 1
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.
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
.
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';
).
Outras fontes: StackOverflow, MagePsycho
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.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-1/datas-fusos-e-configuracoes/"]