Olá,
tenho duas entradas
entrada do Ts e entrada do Bt,
e queria calcular a diferença entre elas.
minhas entradaTs é String
e minhas entradaBt é Date .
como posso fazer isso ?
Olá,
tenho duas entradas
entrada do Ts e entrada do Bt,
e queria calcular a diferença entre elas.
minhas entradaTs é String
e minhas entradaBt é Date .
como posso fazer isso ?
que tipo de diferença?
Qual é a maior?
Diferença de dias?
Diferença de anos?
Diferença de horas?
Dúvida em como converter String em Date?
ajude-me a ti ajudar.
[quote=rafaduka]que tipo de diferença?
Qual é a maior?
Diferença de dias?
Diferença de anos?
Diferença de horas?
Dúvida em como converter String em Date?
ajude-me a ti ajudar.
[/quote]
então é assim preciso saber a diferença e, minutos…
por exemplo …
SaidaTs = 13:31
SaidaBt = 13:35
diferenca seria 04 min certos.
então estou tentando fazer tudo como Date…usando o SimpleDateFormat (HH:mm)
[code]/**
* Calcula a diferença de duas datas em minutos
*
* Importante: Quando realiza a diferença em minutos entre duas datas, este método considera os segundos restantes e os converte em fração de minutos.
* @param dataInicial
* @param dataFinal
* @return quantidade de minutos existentes entre a dataInicial e dataFinal.
*/
public static double diferencaEmMinutos(Date dataInicial, Date dataFinal){
double result = 0;
long diferenca = dataFinal.getTime() - dataInicial.getTime();
double diferencaEmMinutos = (diferenca /1000) / 60; //resultado é diferença entre as datas em minutos
long segundosRestantes = (diferenca / 1000)%60; //calcula os segundos restantes
result = diferencaEmMinutos + (segundosRestantes /60d); //transforma os segundos restantes em minutos
return result;
}[/code]
créditos by: jose_castilho
[quote=rafaduka][code]/**
* Calcula a diferença de duas datas em minutos
*
* Importante: Quando realiza a diferença em minutos entre duas datas, este método considera os segundos restantes e os converte em fração de minutos.
* @param dataInicial
* @param dataFinal
* @return quantidade de minutos existentes entre a dataInicial e dataFinal.
*/
public static double diferencaEmMinutos(Date dataInicial, Date dataFinal){
double result = 0;
long diferenca = dataFinal.getTime() - dataInicial.getTime();
double diferencaEmMinutos = (diferenca /1000) / 60; //resultado é diferença entre as datas em minutos
long segundosRestantes = (diferenca / 1000)%60; //calcula os segundos restantes
result = diferencaEmMinutos + (segundosRestantes /60d); //transforma os segundos restantes em minutos
return result;
}[/code]
créditos by: jose_castilho [/quote]
Uol. …
Muito Obrigado !
vou testar !
Valeu mesmo .
Por favor edite o título e insira [RESOLVIDO]
[quote=rafaduka]Por favor edite o título e insira [RESOLVIDO]
[/quote]
Não deu certo o que você me passou ontem . .
minha lista gerava em branco …
então fiz assim
if (comp.getEntradaTS() != null && comp.getEntradaBio() != null) {
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
entTs = df.parse(comp.getEntradaTS());
entBt = comp.getEntradaBio();
diferenca = new Date(entTs.getTime() - entBt.getTime());
diferencaEnt = diferenca.getMinutes();
}
if (comp.getSaidaTS() != null && comp.getSaidaBio() != null) {
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
saiTs = df.parse(comp.getSaidaTS());
saiBt = comp.getSaidaBio();
diferenca = new Date(saiTs.getTime() - saiBt.getTime());
diferencaSai = diferenca.getMinutes();
}
if ((diferencaEnt <= 5) && (diferencaSai <= 5)) {
listComp.remove(comp);
}
só que ele está calculando errado …
tem campos que ele tinha que exibir e não exibe…
e outros que não tinha que exibir e ele exibe --’ . .
Pode me ajudar ?
realizei o teste no método e está funcionando! :roll:
[quote]tem campos que ele tinha que exibir e não exibe…
e outros que não tinha que exibir e ele exibe --’ . . [/quote]
pode ser mais claro?
[quote=rafaduka]realizei o teste no método e está funcionando! :roll:
[quote]tem campos que ele tinha que exibir e não exibe…
e outros que não tinha que exibir e ele exibe --’ . . [/quote]
pode ser mais claro?[/quote]
assim, na minha lista tenho as vezes entrada e saidas do TS nulos.
exemplo:
codigo data Entrada TS Entrada Bt Saida Ts Saida Bt
1392 03/01/2012 null 08:42 null 10:38
1392 04/01/2012 null 12:00 null 12:00
1392 05/01/2012 null 09:19 null 16:56
e está certo, porque nesse caso ele não preenche o TS. é automático.
então eu preciso que ele exiba essas linhas…
porque nesse caso não tem que fazer a conta…
apenas exibir…
agora esse daqui :
codigo data Entrada TS Entrada Bt Saida Ts Saida Bt
2060 04/01/2012 07:33 07:33 18:31 18:34
está vendo a diferenca de uma saida com outra, é menor que 5 min.
mas ele exibe . e não deveria exibir. . =/
[quote=rafaduka]realizei o teste no método e está funcionando! :roll:
[quote]tem campos que ele tinha que exibir e não exibe…
e outros que não tinha que exibir e ele exibe --’ . . [/quote]
pode ser mais claro?[/quote]
assim, na minha lista tenho as vezes entrada e saidas do TS nulos.
exemplo:
codigo data Entrada TS Entrada Bt Saida Ts Saida Bt
1392 03/01/2012 null 08:42 null 10:38
1392 04/01/2012 null 12:00 null 12:00
1392 05/01/2012 null 09:19 null 16:56
e está certo, porque nesse caso ele não preenche o TS. é automático.
então eu preciso que ele exiba essas linhas…
porque nesse caso não tem que fazer a conta…
apenas exibir…
agora esse daqui :
codigo data Entrada TS Entrada Bt Saida Ts Saida Bt
2060 04/01/2012 07:33 07:33 18:31 18:34
está vendo a diferenca de uma saida com outra, é menor que 5 min.
mas ele exibe . e não deveria exibir. . =/
Esse trecho, remove da lista os itens que estão no limite de 5.
if ((diferencaEnt <= 5) && (diferencaSai <= 5)) {
listComp.remove(comp);
}
como vc está passando os valores para o método que retorna os minutos? os argumentos são do tipo Date.
já testou passando 2 datas? A diferença retorna como um double.
[quote=rafaduka]Esse trecho, remove da lista os itens que estão no limite de 5.
if ((diferencaEnt <= 5) && (diferencaSai <= 5)) {
listComp.remove(comp);
}
como vc está passando os valores para o método que retorna os minutos? os argumentos são do tipo Date.
já testou passando 2 datas? A diferença retorna como um double.[/quote]
como assim passar duas datas ??
Desculpa esqueci de te informar isso.
está assim
Date diferenca, entTs, entBt, saiTs, saiBt;
int diferencaEnt = 0, diferencaSai = 0;
if (comp.getEntradaTS() != null && comp.getEntradaBio() != null) {
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
entTs = df.parse(comp.getEntradaTS()); // Aqui converto pra date pq meu EntradaTS é String
entBt = comp.getEntradaBio(); // Aqui é Date direto ..
diferenca = new Date(entTs.getTime() - entBt.getTime());
diferencaEnt = diferenca.getMinutes();
}
if (comp.getSaidaTS() != null && comp.getSaidaBio() != null) {
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
saiTs = df.parse(comp.getSaidaTS()); //Aqui converto pra date pq meu SaidaTS é String
saiBt = comp.getSaidaBio(); //Aqui ja e date
diferenca = new Date(saiTs.getTime() - saiBt.getTime());
diferencaSai = diferenca.getMinutes();
}
if ((diferencaEnt <= 5) && (diferencaSai <= 5)) {
listComp.remove(comp);
}
[code]/**
* Calcula a diferença de duas datas em minutos
*
* Importante: Quando realiza a diferença em minutos entre duas datas, este método considera os segundos restantes e os converte em fração de minutos.
* @param dataInicial
* @param dataFinal
* @return quantidade de minutos existentes entre a dataInicial e dataFinal.
*/
public static double diferencaEmMinutos(Date dataInicial, Date dataFinal){
double result = 0;
long diferenca = dataFinal.getTime() - dataInicial.getTime();
double diferencaEmMinutos = (diferenca /1000) / 60; //resultado é diferença entre as datas em minutos
long segundosRestantes = (diferenca / 1000)%60; //calcula os segundos restantes
result = diferencaEmMinutos + (segundosRestantes /60d); //transforma os segundos restantes em minutos
return result;
}[/code]
vc usou?
[quote=rafaduka][code]/**
* Calcula a diferença de duas datas em minutos
*
* Importante: Quando realiza a diferença em minutos entre duas datas, este método considera os segundos restantes e os converte em fração de minutos.
* @param dataInicial
* @param dataFinal
* @return quantidade de minutos existentes entre a dataInicial e dataFinal.
*/
public static double diferencaEmMinutos(Date dataInicial, Date dataFinal){
double result = 0;
long diferenca = dataFinal.getTime() - dataInicial.getTime();
double diferencaEmMinutos = (diferenca /1000) / 60; //resultado é diferença entre as datas em minutos
long segundosRestantes = (diferenca / 1000)%60; //calcula os segundos restantes
result = diferencaEmMinutos + (segundosRestantes /60d); //transforma os segundos restantes em minutos
return result;
}[/code]
vc usou?[/quote]
então tentei usar esse dai …
ai não deu certo…
então acabei tentando aquele ali …
e deu meio certo . rs.
mas não tentei usar os “dois juntos”… ajustá-los.
você achá que da certo ?
Acredito que o problema está na hora, que vc tenta remover da Lista.
[code]package br.com.teste
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Teste {
public static void main(String[] args) throws ParseException {
String entrada = "18:31";
String saida = "18:34";
Date entradaData = null;
Date saidaData = null;
final Integer LIMITE_MINUTO = 5;
SimpleDateFormat dfEntrada = new SimpleDateFormat("HH:mm");
entradaData = dfEntrada.parse(entrada);
SimpleDateFormat dfSaida = new SimpleDateFormat("HH:mm");
saidaData = dfSaida.parse(saida);
long min = saidaData.getTime() - entradaData.getTime();
Integer resultado = (int) ((min / 1000)/60);
System.out.println("Diferença: " + resultado + " minuto(s)");
boolean isDifference = (resultado <= LIMITE_MINUTO);
System.out.println(isDifference ? "REMOVER" : "NÂO REMOVER");
}
}
[/code]
[quote=rafaduka]Acredito que o problema está na hora, que vc tenta remover da Lista.
[code]package br.com.cleartech;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Teste {
public static void main(String[] args) throws ParseException {
String entrada = "18:31";
String saida = "18:34";
Date entradaData = null;
Date saidaData = null;
final Integer LIMITE_MINUTO = 5;
SimpleDateFormat dfEntrada = new SimpleDateFormat("HH:mm");
entradaData = dfEntrada.parse(entrada);
SimpleDateFormat dfSaida = new SimpleDateFormat("HH:mm");
saidaData = dfSaida.parse(saida);
long min = saidaData.getTime() - entradaData.getTime();
Integer resultado = (int) ((min / 1000)/60);
System.out.println("Diferença: " + resultado + " minuto(s)");
boolean isDifference = (resultado <= LIMITE_MINUTO);
System.out.println(isDifference ? "REMOVER" : "NÂO REMOVER");
}
}
[/code][/quote]
Ah Muito Obrigado !
vou analisar e ve se posso fazer de uma maneira diferente .
Obrigado .
Aceita um conselho ? Seria bom você estudar lógica de programação…
Bom estudo