Galera, é possível um tipo Date receber uma data como essa “dd/MM/yyyy”?
Problema com tipo Date
10 Respostas
não. vc deve usar o SimpleDateFormat para converter a string num tipo Date,
abraços.
Mas eu já fiz isso e não funciona!!
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
public class Main {
public static void main(String[] args) {
//Pega a data do sistema.
GregorianCalendar gc = new GregorianCalendar();
int dia = gc.get(GregorianCalendar.DAY_OF_MONTH);
int mes = gc.get(GregorianCalendar.MONTH);
int ano = gc.get(GregorianCalendar.YEAR);
//Junta tudo numa string.
String a = String.valueOf(dia) + "/" + String.valueOf(mes) + "/" + String.valueOf(ano);
System.out.println("Data em String: " + a);
Date data;
try{
//Aqui deveria formatar a data.
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
data = formato.parse(a);
System.out.println("Data em Date: " + data);
}catch(ParseException e){
e.printStackTrace();
}
}
}
Isso produz a saída:
Data em String: 16/2/2009
Data em Date: Mon Feb 16 00:00:00 BRT 2009
Estou fazendo isso pq preciso salvar a data no mysql com hibernate.
É claro que não funciona. Você não imprimiu direito a data:
System.out.println("Data em Date: " + formato.format (data));
É claro que não funciona. Você não imprimiu direito a data:System.out.println("Data em Date: " + formato.format (data));
É que não quero só imprimir, quero salvar um tipo Date no banco com o formato de dd/MM/yyyy 
pelo que sei, se você mapeou o atributo como data não precisa formatar.
É claro que não funciona. Você não imprimiu direito a data:System.out.println("Data em Date: " + formato.format (data));É que não quero só imprimir, quero salvar um tipo Date no banco com o formato de dd/MM/yyyy
![]()
Mas no banco o tipo DATE ou TIME não fica no formato dd/MM/yyyy, a menos que você tenha definido na tabela a coluna de tipo VARCHAR. No banco o formato é outro.
Não confunda o formato do DATE (string) com seu valor (um java.sql.Date ou java.sql.Time ou java.sql.Timestamp).
iaew cara…
vc não precisa fazer td esse drama para salvar um tipo data com hibernate…
olha so…
// aqui estou mapeando com Annotations
// na verdade nem seria preciso fazer isso... o proprio hibernate ja sabe q e um campo date...
@Temporal(value=TemporalType.DATE) //aqui so a data
//@Temporal(value=TemporalType.TIME) //aqui so Hora
//@Temporal(value=TemporalType.TIMESTAMP) //aqui eu salvo a data e hora
private Calendar dataLancto;
...
// para vc utilizar...
Date data = new Date() // isso pega a data do sistema
Calendar calendar = Calendar.getInstance();
calendar.setTime(data);
dataLancto = calendar;
....
// para formatar uma data vc pode usar o DateFormat
Date dt = new Date();
// aqui vc utiliza o tipo de formatação q desejar (1º paramentro)...
//DateFormat.SHORT
//DateFormat.MEDIUM
//DateFormat.LONG
//DateFormat.FULL --- acgho q e isso =)
// vc tambem pode escolher o local (Locale no 2º parametro)...
//nesse caso usei Brasil =)
//new Locale("en", "US") --- padrão USA ^^
DateFormat df = DateFormat.getDateInstance(DateFormat.SORT, new Locale("pt", "BR"));
System.out.println("Data formatada " + df.format(dt));
// Saida ---> Data formatada 16/03/2009
...
// o SimpleDateFormat e mais usado para converter um tipo String em data...
String dt = "16/03/2009";
Date data;
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
data = formato.parse(dt);
bom e isso ai espero ter ajudado…
Mas só colocando
@Temporal(value=TemporalType.DATE)
Ele vai salvar a data em qual formato no banco?
Ainda nao entendi é como ele vai salvar um tipo Date no formato brasileiro. 
Por exemplo:
@Temporal(value=TemporalType.DATE)
Date minhaDataAtual;
Ele vai salvar com qual formato?
Ou então:
@Temporal(value=TemporalType.DATE)
DateFormat df;
Agora sim eu posso formatar a data e que ela vai ser salva em pt, BR?
Mas só colocando
@Temporal(value=TemporalType.DATE)
Ele vai salvar a data em qual formato no banco?
Ainda nao entendi é como ele vai salvar um tipo Date no formato brasileiro. 
Por exemplo:
@Temporal(value=TemporalType.DATE)
Date minhaDataAtual;
Ele vai salvar com qual formato?
Ou então:
@Temporal(value=TemporalType.DATE)
DateFormat df;
Agora sim eu posso formatar a data e que ela vai ser salva em pt, BR?
se o seu campo é do tipo date/datetime, não… vai salvar no formato do próprio SGBD… mas isso não importa, porque basta formatar o dado antes de exibí-lo.
mas se for do tipo varchar/varchar2 basta formatar a String antes de salvar.
abraço.
cara uma dica…
se tem uma data… vc tem q usar um campo do tipo data não uma string.
a respeito de como ela esta no banco…
esquece… vc esta se preocupando muito com o banco… afinal vc e um DBA?
oq eu quero dizer eh… se concetre no seu programa, nos seus objetos…
ja penso se vc decido trocar de banco… de um mysql para um Oracle…
oq vc faria?
tipo data sera sempre um tipo data… não importa como o banco implementa isso… mais sera sempre um campo data…
se vc tem um objeto do tipo data em mãos vc pode fazer oq quiser com ele…
colocar no formato que quiser… entendeu oque eu quero dizer?
da uma pesquisada no google nas classes Date, Calendar, DateFormat e SimpleDateFormat…
frmz