Dúvida low code para contagem de tempo

Olá,

estou em dúvida em como criar um código para contagem de tempo para quando um campo mudar de valor, atualizar um campo de número com a diferença entre duas datas.

if(($objectNew['finalizado_em'] != $objectOld['finalizado_em'])){
$objectNew['_dias_ate_fotos'] = (AQUI SERIA O CAMPO "FINALIZADO EM"-strtotime(str_replace('/','-',$objectNew['inicio_onboarding']))) / (24*3600);
}

Opa @iurirb ,

O caminho é por aí. O código seria algo como isso:

if(($objectNew['finalizado_em'] != $objectOld['finalizado_em'])){
$objectNew['_dias_ate_fotos'] = (strtotime($objectNew['finalizado_em'])-strtotime($objectNew['inicio_onboarding']))/(3600*24);
}

Lembrando que é sempre bom verificar se os dois campos estão preenchidos, caso contrário a automação pode rodar tentando fazer um strtotime em um campo vazio.

if(!empty($objectNew['finalizado_em']) and !empty($objectNew['inicio_onboarding'])){

Além disso, esse código funciona no Before a record is updated. Se for no after, será necessário usar o Jestor.update (mas tomar cuidado para não cair numa recursão ativando outras triggers de update!)

Então, não funcionou aqui.
Ele responde sempre com o resultado zero com essa fórmula.
Não seria necessário o str_replace(‘/’,‘-’ ?

se eu utilizar nesse formato:

if(($objectNew['finalizado_em'] != $objectOld['finalizado_em'])){
$objectNew['_dias_ate_fotos'] = time()-strtotime(str_replace('/','-',$objectNew['inicio_onboarding']))) / (24*3600);
}

funciona, porém a data sempre é calculada contando como finalizado no dia de hoje, mas caso eu queira alterar o dia que foi finalizado daí não é feito o cálculo.

tentei assim, mas não funcionou:

if(($objectNew['finalizado_em'] != $objectOld['finalizado_em'])){
$objectNew['_dias_ate_fotos'] = (strtotime(str_replace('/','-',$objectNew['finalizado_em']))-strtotime(str_replace('/','-',$objectNew['inicio_onboarding']))) / (24*3600);
}

Opa @iurirb

Entendi o que está acontecendo!

Como você está vendo uma variável que você acabou de mudar em before is updated, tá chegando um objeto de data (não salvou no banco ainda).

Isso aqui dá o campo em unixtime. Funciona especificamente pra quando a pessoa muda um campo de data e tá vendo o before.

strtotime($objectNew[‘finalizado_em’][‘date’])