Page 1 of 1

[SOLVED] Hacer opraciones con horas

Posted: Thu Aug 16, 2012 10:51 am
by inggarcia
Buenos dias,

Quisiera saber si es posible hacer operaciones con horas mediante javascript en ProcessMaker. En la Wiki vienen ejemplos pero con fechas, el cual si funciona pero lo que yo quiero hacer es cuando, por ejemplo, ellos pongan cuando empezaron una actividad con este formato "12:00" y terminarion a las "13:30" que en otro textbox aparezca la diferencia asi "1:30" es posible hacerlo con javascript?

Por cierto en php esto mismo se hace de la siguiente manera:

date("H:i", strtotime("00:00") + strtotime($terminoconteo) - strtotime("12:00"));

Re: Hacer opraciones con horas

Posted: Thu Aug 16, 2012 3:28 pm
by liliana
Buenas tardes,

No existe ninguna funcion dentro de ProcessMaker que te permita restar horas, pero si es posible que puedas trabajar sobre codigo JavaScript para generar una operacion. Estuve trabajando en algo de codigo que encontre en la web y adaptandolo un poco a ProcessMaker, no lo termine aun pero te puede ayudar a continuar con tu ejemplo:
Code: Select all
function calcular(v1,v2)
{ var v1 = getField("Time1").value;
var v2 = getField("Time2").value;
var horatotal=getField("Result2");
horas1=v1.split(":");
horas2=v2.split(":");
horatotale=new Array();
for(a=0;a<3;a++)
{
horas1[a]=(isNaN(parseInt(horas1[a])))?0:parseInt(horas1[a])
horas2[a]=(isNaN(parseInt(horas2[a])))?0:parseInt(horas2[a])
horatotale[a]=(horas1[a]-horas2[a]);
}
horatotal=new Date()  
horatotal.setHours(horatotale[0]);
horatotal.setMinutes(horatotale[1]);
horatotal.setSeconds(horatotale[2]);
getField("Result2").value = horatotal.getHours()+":"+horatotal.getMinutes()+":"+horatotal.getSeconds();
  leimnud.event.add(getField('Result2'),'blur',function(){
    calcular(v1, v2);
  
  });
Saludos.

Re: Hacer operaciones con horas

Posted: Mon Aug 20, 2012 12:52 pm
by inggarcia
Gracias por la respuesta;

Por si alguien mas necesita hacer este tipo de operaciones aqui esta el codigo que estoy utilizando, tal vez no sea la mejor forma pero es funcional:

function totalhoras() {

var inicio = getValueById("txtinicio");
var fin = getValueById("txttermino");
var inicio2 = ("2012/01/01 " + inicio + ":00");
var fin2 = ("2012/01/01 " + fin + ":00");

var fechainicio = new Date(inicio2);
var horasinicio = fechainicio.getHours();
var minutosinicio = fechainicio.getMinutes();

var fechafin = new Date(fin2);
var horasfin = fechafin.getHours();
var minutosfin = fechafin.getMinutes();



if(minutosinicio > minutosfin){

var minutostotales = 60 - (minutosinicio - minutosfin);
var horastotales = horasfin - horasinicio - 1;

}
else{

var minutostotales = minutosfin - minutosinicio;
var horastotales = horasfin - horasinicio;
}

if(minutosinicio == '00' && minutosfin == '00'){

var minutostotales = '00';

}



if(horastotales > 9){

var total = horastotales + ":" + minutostotales;
}
else{

var total = "0" + horastotales + ":" + minutostotales;

}

getField("txttohoras").value = total;
}




getField("txttermino").onchange = totalhoras;

Re: [SOLVED] Hacer opraciones con horas

Posted: Thu Jun 25, 2020 4:57 pm
by mbadino
hola, soy nuevo en PM. he intentado utilizar tu operación y no me ha calculado las diferencias en horas. para ello utilice los grid y cargue las fecha de inicio y fecha finalizacion y otra variable de resultado, alli en la formula cargue tu operacion pero no anda.
Me podras ayudar por favor?