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? :?:
Dúvida sobre datas
8 Respostas
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
…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?
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
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?
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. 
[]'s
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
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 …
aê povow valeu pela ajuda…já alterei meu código… tô usando o GregorianCalendar agora… :lol: