Olá pessoal!!! estou tentando comparar 2 datas e não estou conseguindo, não sei o que estou fazendo de errado. se puderem me ajudar eu agradeço.
segue abaixo o código.
[code]package zipnew;
import java.io.File;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JOptionPane;
public class Apagar {
public static void delete(Date d){
String dirCamDigital = ("d:\Cam");
File file;
file = new File(dirCamDigital);
File afile [] = file.listFiles();
Calendar cal = Calendar.getInstance();
cal.set (Calendar.HOUR, 0);
cal.set (Calendar.MINUTE, 0);
cal.set (Calendar.SECOND, 0);
Date sysDate = cal.getTime();
//JOptionPane.showMessageDialog(null,d +" "+"data escolhida");
//JOptionPane.showMessageDialog(null,sysDate+" "+"data do sistema");
if (afile.length==0){
JOptionPane.showMessageDialog(null,"Não existem arquivos no dia escolhido para apagar!!!");
return;
}else{
if (d.after(sysDate)){
JOptionPane.showMessageDialog(null,"Escolha uma data valida!!!");
return;
}else{
boolean teste = false;
int i = 0;
File arquivos = null;
if((JOptionPane.showConfirmDialog(null ,"Vai mesmo apagar os arquivos?","Saída", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION )){
for (int j = afile.length ; i<j; i++){
Date fileDate = new Date(afile[i].lastModified());
fileDate.setHours(0);
fileDate.setMinutes(0);
fileDate.setSeconds(0);
//JOptionPane.showMessageDialog(null,fileDate+" "+"data do arquivo");
if(d.compareTo(fileDate)==0){
arquivos = afile[i];
teste = true;
}
}
// if (teste==true){
// arquivos.delete();
// JOptionPane.showMessageDialog(null,"Arquivos deletados!!!");
//}else{
//JOptionPane.showMessageDialog(null,“Não existem arquivos no dia escolhido para apagar!!!”);
}
}
}
}
}
[/code]
Comprar vc está conseguindo sim. O q faz com q ele não entre dentro do if é a diferença nos millisegundos.
O interessante seria trabalhar com a classe Calendar.
Por exemplo:
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2010);
c.set(Calendar.MONTH, 08 );
c.set(Calendar.DATE, 13);
ou tem outros jeitos de se fazer a mesma coisa só q mais fácilmente. Mas para entender melhor isso aí basta.
E pra pegar o Date do objeto c é só usar o método getTime();
c.getTime();
O calendar também tem o .lastModified() ?
E como é o comando para alterar o millisegundos???
Obrigado pela atenção.
Então cara. Na documentação tem isso.
É assim:
c.set(Calendar.MILLISECOND, 0);
ou então
c.clear(Calendar.MILLISECOND);
o que faz esse método “lastModified()” ?
não tem não… nem no Calendar nem no Date…
o “lastModified()” retorna a data da ultima modificação do arquivo; isso usando o calendar eu sei que da… mais como fazer com o que vem do “lastModified()” ???
Desculpe a ignorância sou iniciante aprendendo.
getDate() que é um metodo do jCalendar1 retorna um date… e nao sei como fazer para converter o date para calendar…
ahhh … intendiii …
Tranquilo cara.
O Calendar tem métodos para isto. Aconselho a dar uma olhada no javadocs.
Mas tem um assim:
c.setTime(file.lastModified());
Esse resolvi com a sua dica obrigado!!!
cal.setTime(fileDate);
fileDate= new Date(afile[i].lastModified());
cal.set (Calendar.HOUR, 0);
cal.set (Calendar.MINUTE, 0);
cal.set (Calendar.SECOND, 0);
cal.set (Calendar.MILLISECOND, 0);
Esse tinha o new… mais com esse outro não fincionou…
databkp = jCalendar1.getDate();
Calendar cal = Calendar.getInstance();
cal.setTime(databkp);
cal.set (Calendar.HOUR,0);
cal.set (Calendar.MINUTE,0);
cal.set (Calendar.SECOND,0);
cal.set (Calendar.MILLISECOND,0);
JOptionPane.showMessageDialog(null,databkp +" "+"data escolhida");
tem alguma dica para me dar?
Obrigado
O q não funcionou ?
Deu alguma excessão?
No caso de exibir datas, o melhor é usar o SimpleDateFormat.
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String s = sdf.format(new Date()); // new Date() retorna a data atual em um objeto do tipo Date
[quote=aluisiodsv]O q não funcionou ?
Deu alguma excessão?
No caso de exibir datas, o melhor é usar o SimpleDateFormat.
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String s = sdf.format(new Date()); // new Date() retorna a data atual em um objeto do tipo Date
[/quote]
Eu usei o JOptionPane para ver se estava zerando a hora, minutos, segundos e milisegundos, e é exatamente esse o problema… no outro codigo que usa o new funcionou perfeitamente… nesse que eu uso o Jcalendar ele não altera os dados da data…
Calendar cal = Calendar.getInstance();
databkp = new Date();
cal.setTime(databkp);
databkp = jCalendar1.getDate();
cal.set (Calendar.HOUR,0);
cal.set (Calendar.MINUTE,0);
cal.set (Calendar.SECOND,0);
cal.set (Calendar.MILLISECOND,0);
Se olhar bem no código vai perceber uma pequena falta de atenção.
Calendar cal = Calendar.getInstance();
databkp = new Date();
databkp = jCalendar1.getDate();
cal.setTime(databkp); // Inverti esta linha com a de cima. Primeiro seta a data e depois seta o calendar.
cal.set (Calendar.HOUR,0);
cal.set (Calendar.MINUTE,0);
cal.set (Calendar.SECOND,0);
cal.set (Calendar.MILLISECOND,0);
Aprendar a fazer debug. Muuuuito útil e vc pegaria o erro de cara!
mesmo mudando a ordem ele continua sem zerar o horário…
eu testei essas combinações antes de testar 
Ele apenas ignora os comandos:cal.setTime(databkp);
cal.set (Calendar.HOUR,0);
cal.set (Calendar.MINUTE,0);
cal.set (Calendar.SECOND,0);
cal.set (Calendar.MILLISECOND,0);
e deixa tudo igual… Thu Aug 12 16:44:22 BRT 2010 :?:
O calendar não ignora os comandos não.
O q deve estar acontecendo é q vc deve estar exibindo outra data e não a do calendar.
use o c.getTime(); para retornar um Date para a variável q vc quer.
mesmo assim ele não zera…
Calendar cal = Calendar.getInstance();
databkp = new Date();
//databkp = jCalendar1.getDate();
databkp = cal.getTime();
cal.setTime(databkp);
cal.set (Calendar.HOUR,0);
cal.set (Calendar.MINUTE,0);
cal.set (Calendar.SECOND,0);
cal.set (Calendar.MILLISECOND,0);
JOptionPane.showMessageDialog(null,databkp +" "+"data escolhida");
Sei que é alguma coisa boba…
Assim consegui zerar o horario…
Calendar cal = Calendar.getInstance();
databkp = new Date();
cal.setTime(databkp);
cal.set (Calendar.HOUR,0);
cal.set (Calendar.MINUTE,0);
cal.set (Calendar.SECOND,0);
cal.set (Calendar.MILLISECOND,0);
databkp = cal.getTime();
Porem quando tento o mesmo puxando do jCalendar; não consigo zerar a data…
Realmente uma coisa muuuuuuuuuuuuuuuuuuuuuuuito boba !! aUHUAhUaUHUAhUaUha
databkp = jCalendar1.getDate();
Calendar cal = Calendar.getInstance();
cal.setTime(databkp);
cal.set (Calendar.HOUR,0);
cal.set (Calendar.MINUTE,0);
cal.set (Calendar.SECOND,0);
cal.set (Calendar.MILLISECOND,0);
databkp = cal.getTime(); // Aqui está o pulo do gato
JOptionPane.showMessageDialog(null,databkp +" "+"data escolhida");
Testa aí e me fala se deu certo.
Funcionou!!!
Essa não esqueço nunca mais!!!
Agora so falta saber se enfim ele vai entrar no meu if… :lol:
Obrigado!!!
Comigo foi assim.
No começo vc tenta, tenta, tenta … até conseguir.
Hj em dia tbm, tento, tento, tento … até conseguir.
A única coisa q muda é a quantidade de linhas q está sempre aumentaaandooo… e tbm a experiência!
Agora estou com esse problema e empacado… 
consegui colocar as 2 datas iguais… tudo zerado para poder comparar apenas os dd/mm/aaaa, verifiquei os “longs” pelo debug do netbeans e ate isso eles estão iguais… porem ele continua sem entrar no if.
Codigo da data escolhida:
databkp = jCalendar1.getDate();
Calendar cal = Calendar.getInstance();
cal.setTime(databkp);
cal.set (Calendar.HOUR,0);
cal.set (Calendar.MINUTE,0);
cal.set (Calendar.SECOND,0);
cal.set (Calendar.MILLISECOND,0);
databkp = cal.getTime();
Codigo que pega a data do arquivo:
fileDate= new Date(afile[i].lastModified());
Calendar calFile = Calendar.getInstance();
calFile.setTime(fileDate);
calFile.set (Calendar.HOUR, 0);
calFile.set (Calendar.MINUTE, 0);
calFile.set (Calendar.SECOND, 0);
calFile.set (Calendar.MILLISECOND, 0);
fileDate = calFile.getTime();
If que compara ambos
if(d.equals(fileDate)){
arquivos = afile[i];
}
Alguem pode me falar onde estou errando???
Obrigado
Edit: CONSEGUI!!! por algum motivo estava saindo assim: dd/mm/aaaa 12:00:00 quando deveria sair: dd/mm/aaaa 00:00:00
eu adicionei isso: fileDate.setHours(0); e funcionou… isso é considerado bacalhau???
Vou propor outra solução para vc.
Use o SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String data = "";
data = sdf.format(jCalendar1.getDate());
Date databkp = sdf.parse(data);
data = sdf.format(afile[i].lastModified());
Date fileDate = sdf.parse(data);
if (databkp.equals(fileDate)) {
arquivos = afile[i];
}