Timezone (Fuso Horario do sistema)
A plataforma pode ser configurada para visualizar as horas em qualquer Timezone
O servidor está configurado SEMPRE para UTC.
O banco de dados grava todas as informações SEMPRE como UTC.
A plataforma pode ser configurada para visualizar as horas em qualquer Timezone (a nível de tenant).
Cada usuario pode ter o seu próprio Timezone para visualizaão dos dados e a plataforma também terá um timezone padrão.
Por exemplo. Se sua equipe está em São Paulo - Brasil e outra em NY - Estados Unidos, vc pode configurar uma timezone padrão para a plataforma, exemplo, America/Sao_Paulo e também pode configurar para que cada usuario visualize a hora de acordo com sua localidade. Independente da forma que visualizará a informação será salva no banco de dados como UTC.
Importante dizer é que no C#, em caso de uso do DateTime.Now
ou derivados. A data sempre estará em UTC. Para converter, use a extensão .ToUserTimeZone
Exemplo:
//exemplo: retorna 22/07/2024 22:37:00
var utcDate = DateTime.Now;
//exemplo: caso o TimeZone do user seja America/Sao_Paulo (-3) retornaria 22/07/2024 19:37:00
var userTimezoneDate = DateTime.Now.ToUserTimeZone();
Api e Api User
Nas execuções de API sempre prevalecerá o Timezone definido no momento do cadastrado no User API
Em caso de Api, você pode definir o Timezone da execução no cadastro do Usuario de API, será esse timezone que o sistema considerará ao executar uma API
Acesse o Cadastro de Usuário de Api (Api User) e defina o timezone como na imagem abaixo:
Programação na API com C# (Custom code)
Na Api C#, em caso de uso do DateTime.Now
ou derivados. A data sempre estará em UTC. Para converter para a Timezone do User que está executando a API, utilize a extensão .ToUserTimeZone
como no exemplo abaixo.
//exemplo: retorna 22/07/2024 22:37:00
var utcDate = DateTime.Now;
//exemplo: caso o TimeZone do user seja America/Sao_Paulo (-3) retornaria 22/07/2024 19:37:00
var userTimezoneDate = DateTime.Now.ToUserTimeZone();
No método C# ApiContext.SaveEntityAsync
, o sistema automaticamente irá converter as datas recebidas por parametro para UTC no momento de salvar no banco de dados, então é importante que a API receba a data no Timezone definido nas configurações do Usuário de API. Exemplo:
Se vc tem uma entidaide chamada Tarefa, e nessa tarefa você tem um campo de Data de entrega que vc gostaria que fosse a data 27/12/2024 23:55:55 no horario de São Paulo.
1. Você deve configurar o seu Usuario de API para ter o TimeZone de São Paulo.
2. Você deve mandar a data com o horario 27/12/2024 23:55:55
3. Você não deve se preocupar com a conversão para UTC ao salvar no banco de dados, pois a conversão será feita automaticamente pelo sistema.