Dúvida sobre datas

8 respostas
marcelo_emanoel

Oi pessoal, tô com uma dúvida… qual a melhor classe pra criar uma data?
Tô usando a classe Date, mas num sei se deveria usar a classe Gregorian Calendar…??
E aí povow? qual a melhor das duas? :?:

8 Respostas

wbsouza

A classe Date é uma classe mais antiga (acho que é uma implementação de data juliana). As classes que implementam Calendar (como a GregorianCalendar por exemplo) são mais “completas” pois suportam internacionalização e levam em conta o Locale que vc define para a sua aplicação. Na GregorianCalendar temos metodos para avançar/retroceder, o que não acontece com a classe Date, logo é mais completa.

[]s, Welington B. Souza

W

…aproveitando a questão, estou usando PreparedStatement e o setDate precisa de uma data da classe java.sql.Date. Consegui fazer a conversão da seguinte forma:

java.util.Date today = new java.util.Date();
java.sql.Date sqlToday = new java.sql.Date(today.getTime());

Dessa forma eu só trabalho com a data do sistema(data de hoje). Minha dúvida é como faço pra inserir no banco uma data digitada pelo cliente para, por exemplo, expirar uma notícia. Suponha que eu precise inserir no banco a data 20/07/2004. Quando receber esse valor como parâmetro, como faço pra convertê-lo em data pra armazenar no banco com o setDate? E quando eu precisar tratar hora:minuto:segundo(hh:mm:ss)

Alguém pode me ajudar?

_fs

Para passar de String para date

Date d = Date.parse( String s );

mas esse é deprecated, tem esses métodos ‘parse’ da classe DateFormat que são melhores:
http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html

W

se eu fizer:

String date;		
	try{
	  Date hoje = new Date();
                  DateFormat df = DateFormat.getDateInstance();
                  date = df.format(hoje);
	}
	catch(Exception e){
	  date = null;
	}
	return date;

o retorno será: 13/07/2004, mas isso como String. Tem como eu obter esse mesmo valor e depois esse valor acrescido do tempo mas como Date e não como String?

caiofilipini

“LIPE”:
tem esses métodos ‘parse’ da classe DateFormat que são melhores:
http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html

Leia melhor o post do LIPE. :wink:

[]'s

wbsouza

Se for um Date

stmt.setTimestamp(1, new java.sql.Timestamp(data.getTime()));

Se for um Calendar

stmt.setTimestamp(1, new java.sql.Timestamp(data.getTimeInMillis()))

[]s, Welington B. Souza

ednazio_fernandes

Existe ainda o SimpleDateFormat
mas aproveitando…meu código abaixo está dando uma Exception e realmente eu não consigo ver o que está errado se puderem me ajudar

** isto funciona **

String br =12/01/2004;

String us = 2004/01/12;

bean.setData(us);

System.out.println(bean.getBrDate()+"	padrão Brasil");

bean.setData(br);

System.out.println("

“+bean.getDataUS()+”	padrão usa");

-----declarando Strings vai blz

– a classe
–sempre dá erro (IllegalArgumentException) quando faço

out.(dataPt(rs.getString("data")));

SimpleDateFormat sdf = new SimpleDateFormat();
 public String dataPt(Date data) throws Exception{                        
        sdf.applyPattern("dd/MM/yyyy");                                
        String s = sdf.format(data);      
        return s;
    }
    /**formata a data para o padrão Br
     *@return s String data no padrão BR 
     */
    public String Data(String s){
        Date data = new Date(s);
        sdf.applyPattern("dd/MM/yyyy");
        return sdf.format(data);
    }
    
    /**Ordena a data para o padrão do USA
     *@param data Um objeto <code>String</code> a ser transformado
     *@return date a data como <code>String</code>
     *e no padrão USA
     *
     */
    public String dataUS(String data)throws Exception{
        sdf.applyPattern("yyyy/MM/d");
        Date d = new Date();
        d = df.parse(data);
        String s =sdf.format(d);        
        return s;
        
    }
}

e quando uso DateFormat.parse(myString) , ele diz que não existe este método …

marcelo_emanoel

aê povow valeu pela ajuda…já alterei meu código… tô usando o GregorianCalendar agora… :lol:

Criado 12 de julho de 2004
Ultima resposta 15 de jul. de 2004
Respostas 8
Participantes 6