Un foro de discusión para nuestra comunidad de hispano hablante

Moderators: ArturoRobles, ArturoRobles

By inggarcia
#24967
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"));
User avatar
By liliana
#24972
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.
By inggarcia
#25030
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;
User avatar
By mbadino
#828173
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?

I have a suggest where user have to select some do[…]

The 500 Internal Server Error is the general catch[…]

Really very nice blog information for this one and[…]

This is a long, lengthy and cumbersome process. T[…]