(ProblemaFUSO)Qual a maneira mais fácil de somar 1h em um campo datatime da grid

(thiagopov) #1

Tenho no banco de dados salvo valores em DataTime ex (2017-09-30 14:00:42) só que o valor salvo tem que ser exibido com uma hora a mais devido ao fuso horário da região, assim na grid pensei em colocar na onRecord e rodar a aplicação:

Dentro da grip, estou colocando esse código na [b]onRecord:

{DataChegada}=date(“d-m-Y H:i:s”,strtotime(’+1 Hour’));

Resultado: 01-10-2017 18:36:05[/b]
{DataChegada}=2017-09-30 14:00:42
Era para ser 30-09-2017 15:00:42…

Alguma solução, obrigado.

(thiagopov) #2

Tentei isso no onApplicationInit

date_default_timezone_set(‘America/Sao_Paulo’);
{DataChegada}=date(‘d/m/Y H:i:s’, time());

Mas tambem não deu…

(Haroldo) #3

Isso vai alterar a hora do servidor no php.

No cadastro do usuário vc tem que ter um parametro com a diferença de fuso horário.
E nos eventos onload no formulário criar uma data hora virtual e alimentar a data e hora da tabela +/- o parametro do usuario, ou em eventos onrecord em grids.

sc_time_diff pode ajudar no calculo:
http://www.scriptcase.com.br/documentacao/pt_br/v9/manual/14-macros/01-visao-geral/#sc_time_diff

Mas tambem não deu…
[/quote]

(thiagopov) #4

Haroldo, grande guru do forum, obrigado por responder, mas sou meio neofito ainda no scriptcase, acredito que na onRecord fica mais fácil fazer, você saberia me dizer se esse script é o caminho ou preciso ajustar, obrigado.

{DataChegada}=date(“d-m-Y H:i:s”,strtotime(’+1 Hour’));

(thiagopov) #5

Tentei usar esse tb mas deu erro:

{DataChegada}->add(new DataInterval(‘PT1H’));

Fatal error: Uncaught Error: Call to a member function add() on string in

(Haroldo) #6

{DataChegada}= date(“Y-m-d H:i:s”,strtotime({DataChegada}." + 1 hour"));

Considerando que data da chegada venha do banco de dados.

(Haroldo) #7

Aqui faltou você instanciar o objeto em {dataChegada} com date_create().

(thiagopov) #8

Obrigado Haroldo, Mestre Jedi SC, deu certo com esse:

{DataChegada}= date(“Y-m-d H:i:s”,strtotime({DataChegada}." + 1 hour"));

O outro acredito que ficaria assim:

{DataChegada}= date_create({DataChegada})->add(new DataInterval(‘PT1H’)); // quase certeza q ta errado :frowning: