Fala, Dev! Tudo bem?

Você provavelmente pode ter notado que quando fazemos um pedido e o mesmo volta do backend com dados de data de criação do pedido e também data de vencimento do pagamento Pix, estas datas não compreendem as que temos no nosso dispositivo. Normalmente podem estar um pouco mais no futuro e não é isso que queremos, não é verdade?

Isso acontece por conta do timezone do nosso backend. Ele está gravando as datas e horas com um timezone diferente do nosso, e isso pode descontrolar um pouco nossa interface. Mas para resolver isso é muito simples! :D Segue abaixo a única modificação que precisamos fazer:

Na nossa classe UtilsServices no método para formatarmos a data (formatDateTime) é preciso que adicionemos o ".toLocal()" logo após o dateTime que passamos para a formatação:

String formatDateTime(DateTime dateTime) {
  initializeDateFormatting();

  DateFormat dateFormat = DateFormat.yMd('pt_BR').add_Hm();
  return dateFormat.format(dateTime.toLocal()); <=== AQUI
}

Isso vai fazer com que a data e hora sejam convertidas para o timezone local do dispositivo, apresentando, então, o correto conforme estamos vendo no relógio do celular. :D

Espero ter ajudado, mas caso tenha qualquer problema ou dúvida fique à vontade para me enviar uma mensagem aqui no fórum. Bons estudos!