E ae comunidade
Alguem sabe como compara datas! por favor... estou tendo problemas... cheguei até aqui !
Calendar calendar = GregorianCalendar.getInstance(TimeZone.getTimeZone(“GMT-03:00”), new Locale(“pr”,“BR”));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“dd/mm/yyyy”);
calendar.setTime(simpleDateFormat.parse(“01/01/2005”));
eu preciso pegar a diferença em dia de duas datas ! por exemplo
01/01/2005 - 02/01/2005 = 1 dia
01/01/2005 - 03/01/2005 = 2 dia
//criando uma interface Calendar, instanciando com GregorianCalendar
Calendar calendar = new GregorianCalendar();
//setando a data (axo que eh setTime msm…)
calendar.setTime(2005,03,02);
//pegando o numero do dia no ano (10 de janeiro = 10)
int dia1 = cal.get(Calendar.DAY_OF_YEAR);
calendar.setTime(2005,03,03);
int dia2 = cal.get(Calendar.DAY_OF_YEAR);
dia2-dia1 >> 1!
acho que isso vai resolver… mas só para datas no mesmo ano!!!
se os anos forem diverente, você pode fazer por etapas, tipo:
20/dez/2004 >> 10/jan/2005
faz de 20/dez ate dia 31/dez, e de 1/jan ate 10/jan
[]`s
Ohhh cara… valeu… acho que deu certo… so estou meio encudo com ano
bisesto… Da uma olha e ve se vale fazer dessa forma !
private Locale locale;
private TimeZone timeZone;
protected final String DATABASE = “07/10/1997”; //data base para calculo do fator de vencimento
protected int calculaFatorVencimento(String argDataVencimento){
String dataInicial[] = DATABASE.split("/");
String dataVencimento[] = argDataVencimento.split("/");
int anoVenc = Integer.parseInt(dataVencimento[2]);
int anoIni = Integer.parseInt(dataInicial[2]);
Calendar calendar = GregorianCalendar.getInstance(timeZone,locale);
calendar.set(anoIni,
Integer.parseInt(dataInicial[1]),
Integer.parseInt(dataInicial[0]));
int diaInicial = calendar.get(Calendar.DAY_OF_YEAR);
calendar.set(anoVenc,
Integer.parseInt(dataVencimento[1]),
Integer.parseInt(dataVencimento[0]));
int diaVencimento = calendar.get(Calendar.DAY_OF_YEAR);
return (diaVencimento - diaInicial) + ((anoVenc - anoIni) * 365);
}
public static void main(String args[]){
System.out.println(new Teste().calculaFatorVencimento("05/07/2000"));
}
Ohhh comunidade… tudo beleza.
Andei tendo problemas com datas… realmente é meio complicado trabalhar com datas em java ! Acho que consegui resolver o problema com a ajuda de vcs… mas será que realmente precisa fazer tudo isso ?
Por favor… olhem o codigo abaixo e me dizem oque vcs acham.
public class Time {
private final String DATABASE = "07/10/1997"; //data base para calculo do fator de vencimento
private final TimeZone timeZone = TimeZone.getTimeZone("America/Los_Angeles");
private final Locale locale = new Locale("pr","BR");
/**
* Um ano é bissexto se for divisivel por 4 mas nao divisivel por 100,
* exceto pelos anos divisiveis por 400, que sao bissextos.
* @param argDataInicial
* @param argDataFinal
*/
private final int isAnoBissexto(int ano){
if ((ano%4==0 && ano%100 !=0) || ano%400==0)
return 1;
return 0;
}
protected int calculaFatorVencimento(String argDataVencimento){
String dataInicial[] = DATABASE.split("/");
String dataVencimento[] = argDataVencimento.split("/");
int anoVenc = Integer.parseInt(dataVencimento[2]);
int anoIni = Integer.parseInt(dataInicial[2]);
Calendar calendar = GregorianCalendar.getInstance(timeZone,locale);
calendar.set(anoIni,
Integer.parseInt(dataInicial[1]),
Integer.parseInt(dataInicial[0]));
int diaInicial = calendar.get(Calendar.DAY_OF_YEAR);
calendar.set(anoVenc,
Integer.parseInt(dataVencimento[1]),
Integer.parseInt(dataVencimento[0]));
int diaVencimento = calendar.get(Calendar.DAY_OF_YEAR);
int anoBissexto = 0;
while( anoIni < anoVenc)
anoBissexto+=isAnoBissexto(anoIni++);
return (diaVencimento - diaInicial) + ((anoVenc - anoIni) * 365) + anoBissexto;
}
public static void main(String args[]){
System.out.println(new Time().calculaFatorVencimento("05/07/2000"));
}
}
como faco para comparar duas datas ???
a inicial vou digitar num textfield e a final em outro textfield ???