GARANTIR DESCONTO

Fórum Comparação de Datas #565236

09/04/2009

0

Oi amigos, Preciso comparar se uma data dd/mm/aaaa é maior que a data atual. ou maior que uma data X... Alguém?
Andréa Martins

Andréa Martins

Responder

Posts

09/04/2009

Rafael Afonso

Olá: Use o [url=http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html#after(java.util.Date)]after()[/url], [url=http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html#before(java.util.Date)]before()[/url], [url=http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html#compareTo(java.util.Date)]compareTo()[/url] (recomendado) ou o [url=http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html#equals(java.lang.Object)]equals()[/url]. Grato,
Responder

Gostei + 0

09/04/2009

Rafael Afonso

Pode dar exemplo??? se possível no formato dd/mm/aaaa... obrigada
Responder

Gostei + 0

09/04/2009

Rafael Afonso

[quote="Andréa Martins"]Pode dar exemplo??? se possível no formato dd/mm/aaaa... obrigada
Olá: É um objeto Date ou uma String com uma data? Caso seja a primeira opção leia [url=http://javaalmanac.com/egs/java.util/CompDates.html]este exemplo[/url]. Se for o segundo caso, então converte as Strings em Datas, usando o java.text.DateFormat. Grato,
Responder

Gostei + 0

09/04/2009

Rafael Afonso

Andréa.. A classe Date tem comparações que podem ser feitas direta pelos métodos... Como o Rafael disse... Se você precisar passar de String para Date, utilize o [url=http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html]SimpleDateFormat[/url] Exemplo:
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date minhaData = format.parse("12/05/2004");

if (minhaData.after(new Date()) {
  // Ainda vai acontecer o dia
} else if (minhaData.before(new Date()) {
  // O dia já aconteceu
}
...
Responder

Gostei + 0

09/04/2009

Rafael Afonso

Sei disso gente e agradeço a ajuda dada até agora... criei uma classe que faz o que quero, mais estou com dificuldade de setar a hora, o minuto e o segundo. Fiz uma Classe DateUtil com dois métodos comparaDatas. Um passando duas Strings e o outro uma String e um Date: Quando passo duas Strings da certo pois faço a formatação e a comparação com after e before. Hora, minuto e segundo são nulas ou vazias ou 0 (sei lá) para as duas No segundo caso (e que eu precisarei usar com mais frequência), estarei comparando uma string no formato (ddmmaaaa) que vem como parâmetro e a data atual. O que faço: Instancio dois objetos Calendar,
 // essa é para a String
Calenda priData = Calendar.getInstance();
          priDate.set(... substrings correspondentes para ano, mes e dia)

// para pegar o dia de hoje
Calenda Data = Calendar.getInstance();
O problema é que se hoje é dia 23 de maio de 2004 e eu tenho uma String 23052004, não consigo fazer o que quero porque Data sempre será maior que priData pois esse metodo leva em consideração a hora, minuto e segundo. PS.: diminui 1 do mês O que eu tentei fazer é setar a hora, minuto e segundo de Data para 0, mas não consigo.. Na verdade, a comparação das horas não me interessa apenas do dia, mes e ano... Tô correndo atrás lendo a API, mas se alguém puder me dar uma luz ou sugestão melhor,,, Agradeço muiiiito :lol: Beijos, Andréa
Responder

Gostei + 0

09/04/2009

Rafael Afonso

Andréa: Acho, de novo, que seria bom você usar o DateFormat:
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); 
Date data1 = format.parse(string1);  // Data no formato "yyyyMMdd"
Date data2 = format.parse(string2);  // Data no formato "yyyyMMdd"

if (data1.after(data2)) { 
  // ...
} else if (data1.before(data2)) { 
  // ...
} 
Como vê, não há necessidade de usar Calendar. Grato,
Responder

Gostei + 0

09/04/2009

Rafael Afonso

caros amigos..... estou tentando comprar duas datas... tbm... so que tipo usando after....... ele usa apenas o '>' o before '<' o compareTo retorna eu nao sei a regra ppro compareTo....Tenho que achar um metodo que me retorne True por exemplo se uma Data for menor ou igual a outra Data.
Responder

Gostei + 0

09/04/2009

Rodério Kunz

Veja se isso ajuda.... Valew.
import java.text.*;
import javax.swing.*;
import java.util.*;

public class Student {
	public static void main(String[] args) {
		Function obj = new Function();
		obj.entrada();
	}
}

class Function {
	JTextArea tela = new JTextArea();
	String dataNasc = "";
	int idade = 0;

	public void entrada() {
		dataNasc = JOptionPane
				.showInputDialog("Informe a data de nasc no formato ddmmyyyy:");
		tela.append("A sua idade eh:\n" + Idade(dataNasc));
		tela.append("\nMês do Niver:\n" + dataNasc.substring(2, 4));
		tela.append("\n\nSão Paulo, " + Tempo());
		JOptionPane.showMessageDialog(null, tela);
	}

	public static int Idade(String dtNasc) {
		Date dt = null;
		SimpleDateFormat temp = new SimpleDateFormat("ddMMyyyy");
		try {
			dt = temp.parse(dtNasc);
		} catch (Exception e) {
			e.printStackTrace();
		}
		Calendar dtNiver = new GregorianCalendar();
		dtNiver.setTime(dt);
		Calendar dtHoje = Calendar.getInstance();
		int idade = dtHoje.get(Calendar.YEAR) - dtNiver.get(Calendar.YEAR);
		dtNiver.add(Calendar.YEAR, idade);
		if (dtHoje.before(dtNiver)) {
			idade--;
		}
		return idade;
	}

	public static String Tempo() {
		return new SimpleDateFormat("dd/MM/yyyy HH:mm").format(new Date());
	}
}
Responder

Gostei + 0

22/07/2009

Daniel C.

Apesar de ser um tópico antigo, já que este tópico me ajudou... posto o meu cód. que talvez ajude mais alguem.
    /**
     * Converte uma String para um objeto Date. Caso a String seja vazia, nula ou inválida,
     * retorna null. ex: de inválidas (31/02/2009), (01/01/09),
     * @param data String no formato dd/MM/yyyy a ser formatada
     * @return Date Objeto Date ou null caso receba uma String vazia ou nula
     * @throws Exception Caso a String esteja no formato errado
     */
    public static Date StringParaDate(String data){

        if (data == null || data.equals(""))
            return null;
        
        try {
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            formatter.setLenient(false); //se tolerancia se a data for inválida retorna erro ex:31/02/2009

            Date dataMinima = formatter.parse("01/01/1880");
            Date dataMaxima = formatter.parse("31/12/2500");
            Date dataParam = formatter.parse(data);

            //comparando período válido
            if ((dataParam.before(dataMinima))||(dataParam.after(dataMaxima))){
                return null;
            }else{
                return dataParam;
            }
        } catch (ParseException e) {            
            return null;
        }        
    }
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar