Fluxo para operacoes matematicas com hora e data no Maker 5
-
Ola,
Alguém sabe como funciona o maker na parte de fluxos para fazer operações matemáticas com horas na versão 5? Tem que fazer uma conversão antes nos parâmetros ou ja com a função soma e possível? Vi que por parâmetros as operações la so trabalham com o tipo numero e nao data/hora.
-
Existem as funções de diferença entre datas, pesquise por "Diferenças" e veja se te atende.
Não sei qual a necessidade, mas se for adicionar ou subtrair, você pode usar a função "Incrementar Hora / Minuto / Segundo", como na imagem abaixo:
OBS: Se quiser somar coloca numero positivo, se quiser subtrair coloca numero negativo.
-
OK! Avalie as funções nativas, muitas delas facilitam a vida na hora de trabalhar com data e hora. Agora quando é algo específico, geralmente eu trato manualmente, converto para numero, faço as operaçoes necessarias e transformo em data / hora novamente.
Lembrando também, existe a possibilidade de realizar essas operações via banco (Query - SQL) e até via Javascript.
Um abraço.
-
Vendo aqui nas funções nativas(matemáticas) da maker vi que só aceita parâmetros sendo eles no formato de números como datatype. Neste caso via fluxo seria possível fazer a conversão de data pra numero? Também nao achei aqui. Via Javascript e possível como? Estou meio perdido porque estou ainda me adaptando ao maker.
-
Se você usar a função "Para Inteiro" em uma data, se nao estiver enganado, ela coverte para numero "Timestamp".
Ou você obter ir obtendo a parte da data que deseja, por exemplo. usando a função "ANO", retorna o ano da data em inteiro, ou "MÊS" ou "DIA" para retornar o mês e dia em formato inteiro.
Via Javascript o Maker tem uma função nativa "Executar JavaScript", no qual você pode escrever seu código e executá-lo.
-
Fiz um exemplo rapido aqui para alertar a conversão via MAKER, veja se ajuda:
o Códgio JS ta aqui se quiser copiar e colar:
function dataParaTimestamp(data) {
const timestamp = new Date(data).getTime();
return timestamp;
}const minhaData = new Date("2023-08-04T12:34:56");
const timestamp = dataParaTimestamp(minhaData);
return timestamp; -
Oi boa tarde,
Vou testar aqui o JS e ver se vai. Na função para inteiro vi la antes que ele arredonda e deixa so uma casa. Por exemplo de 12,54 ele converte pra 12. Neste caso no JS iria precisar de dois parâmetros pois quero pegar hora da entrada e a saída por exemplo 08:00 e 12:00 e assim fazer as operações matemáticas. Pelo que eu mexi aqui na API de função, quando ele ja vem com os parâmetros pre definidos nao pra colocar mais.
-
Boa tarde,
No JS você pode passar quantos parametro desejar, você pode montar a string do JS concantenado e passando parametro ou pode usar a função "Trocar todas as subsquencias".
Eu costumo aninhar varias "Trocar todas as subsequencias", uma para cada parametro, utilizando uma tag no meu parametro, por exemplo @dataHoraEntrada e dai eu troco essa subquencia pelo valor do parametro, obvio que só precisa se atentar a formatação do JS.
Espero ter ajudado.
-
Escrevi esse exemplo, subtraíndo 2 datas e retornando a quantidade de horas entre elas:
Para funcionar coloquei a data nesse formato:
Segue o código JS:
function diferencaEmHoras(dataInicio, dataFim) {
const inicio = new Date(dataInicio);
const fim = new Date(dataFim);
const diferencaEmMilissegundos = Math.abs(fim - inicio);
const diferencaEmHoras = diferencaEmMilissegundos / (1000 * 60 * 60); // 1000 ms * 60 s * 60 min = 1 hora
return diferencaEmHoras;
}const dataInicio = "@dataInicio";
const dataFim = "@dataFim";const diferencaHoras = diferencaEmHoras(dataInicio, dataFim);
return diferencaHoras; -
Ola Diego boa tarde,
No caso dos parâmetros ali no JS eu entendi, mas a dificuldade que estou encontrando e em relação aos parâmetros que passamos la no fluxo do maker. Eu estou so trabalhando com pegar as horas no formulário e fazer as operações matemáticas. Como elas estão no tipo hora o maker nao esta indo, pois o maker só faz operações com tipo numero la na API.
Por exemplo la no formulário na caixa de texto tem : entrada(12:00) saída(17:00). Como estao nesse tipo de dados não achei uma função de conversão de Hora para Numero na API para dai sim fazer as operações matemáticas.