Fórum Calcular horas com javascript. #592154
03/04/2018
0
Galera sou iniciante no desenvolvimento web estou desenvolvendo um sistema que precisa calcular o horário total de um certo serviço, subtraindo o valor do horário inicial do valor horário que foi finalizado certa atividade, e travei nessa parte:
no alert ele aparece como NaN e no campoHrTot não aparece nada.
pois não trás o resultado que eu desejo, lembrando que esses campos no html são do tipo time e só quero calcular as horas mesmos, ignorando os dias.
function newFunction() {
var hrIni =new Date(document.getElementById("hrIni").value);
var hrF = new Date(document.getElementById("hrF").value);
var hrTot = new Date();
hrTot.setHours(hrIni.getHours()-hrF.getHours()); //Calcular um menos o outro
alert(hrTot.getHours()); //quero mostrar em um alert o total das horas
document.getElementById("hrT").value = hrTot; //Jogar o valor em um terceiro campo do tipo time
}
no alert ele aparece como NaN e no campoHrTot não aparece nada.
pois não trás o resultado que eu desejo, lembrando que esses campos no html são do tipo time e só quero calcular as horas mesmos, ignorando os dias.
Caique
Curtir tópico
+ 1
Responder
Post mais votado
05/04/2018
Já conhece o moment.js? (https://momentjs.com/)
Pode ser que te ajude.
Pode ser que te ajude.
Ermesom Lourenco
Responder
Gostei + 1
Mais Posts
05/04/2018
Fernando Duwe
Oi Caique,
O problema com as datas ocorre porque, para criar o objeto Date, você precisa informar uma data/hora válida, não somente o 08:00, consegui resolver o problema assim:
var hrIni =new Date("01/01/1990 " + document.getElementById("hrIni").value + ":00");
var hrF = new Date("01/01/1990 " + document.getElementById("hrF").value + ":00");
Porém, pelo que vi na sua função, hrTot está sendo criado com a data atual, o que fará com que sua conta não feche, utilize hrF para calcular ao invés disso.
O problema com as datas ocorre porque, para criar o objeto Date, você precisa informar uma data/hora válida, não somente o 08:00, consegui resolver o problema assim:
var hrIni =new Date("01/01/1990 " + document.getElementById("hrIni").value + ":00");
var hrF = new Date("01/01/1990 " + document.getElementById("hrF").value + ":00");
Porém, pelo que vi na sua função, hrTot está sendo criado com a data atual, o que fará com que sua conta não feche, utilize hrF para calcular ao invés disso.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)