Pessoal tem como fazer um cast ou conversão de uma String (dd/MM/yyyy) para um Date?
Oi, Casting direto não dá não você vai ter que fazer a conversão tipo:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = sdf.parse("27/07/2006");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false);
Date data = sdf.parse("01/12/2005");
Seria isso?
Repita comigo: em Java, cast não é conversão (salvo no caso de primitivos, e olhe lá.). Ponha isso na cabeça: cast não é conversão. Se tiver uma pulseirinha do Senhor do Bonfim, escreva sobre ela “Em Java, cast não é conversão” e leia toda vez que for fazer essa pergunta.
O que você quer fazer é uma conversão. Por exemplo:
import java.text.*;
...
DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");
df.setLenient (false);
Date dt = df.parse ("31/12/2006");
...
Olha, sem fazer flames, mas acho que desde a minha pergunta (cast OU conversão) e em todas as respostas ficou bem entendido que em Java cast e conversão são coisas distintas.
Então a fita do Senhor do Bonfim é desnecessário.
Pessoal valeu.
Cara ontem mesmo você colocou um post aqui com o seguinte código:
Date data = null;
String dataTexto = new String(dataInicial);
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
format.setLenient(false);
try {
data = format.parse(dataTexto);
} catch (ParseException ex) {
ex.printStackTrace();
}
E hoje você pergunta como transformar uma String para Date? Não entendo! Oras a resposta certa para você seria:
“Do mesmo jeito que você fez ontem!”
Só estava zoando um pouco com a fitinha do Senhor do Bonfim.
É que cansei de ver gente tentando fazer isto:
Date dt = (Date) “31/12/2006”;
e não tinha lido a história da conversão.
Infelizmente (ou felizmente, para nós pobres mortais que temos de manter os códigos dos outros), não existe redefinição de operadores. Em C++ isto poderia ser definido com uma sintaxe parecida com a seguinte:
class string {
public:
operator Date (const string str) {
SimpleDateFormat df ("dd/MM/yyyy");
df.setLenient (false);
return df.parse (str);
}
... etc. ....
}
Sussu. :lol:
Vc ainda pelo que vi conhece C, que pelo que sei é “semelhante” a Java.
Eu vim do PHP que é tipado de forma dinâmica. Aí já viu né.
Cara aproveitando o topico do colega sobre data, um dia desse me peguei com a seguinte historia…
eu tinha um
String stringData = Date.toString();
// Thu Jul 27 11:13:57 GMT-03:00 2006
... no futuro eu precisei de transformar essa String em Date
so que o constructor de Date que recebe String está deprecated,
como que eu devia fazer ?
tentei com o que a API fala pra substituir o new Date(),
DateFormat.parse(String s)
mais o formato com que minha data.toString() ficou dava pau.
como que desenrolo isso ? (acho que essa ñ eh complicado )
Eu estou tendo problema ao inserir data.
[code] String dia;
String mes;
String ano;
String dataProducao;
dia = boxDia.getSelectedItem().toString();
mes = boxMes.getSelectedItem().toString();
ano = boxAno.getSelectedItem().toString();
dataProducao = dia+ "/" +mes+ "/" +ano;
Date data = null;
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
try {
data = format.parse(dataProducao);
} catch (ParseException ex) {
ex.printStackTrace();
}[/code]
Não está aceitando o formato.
Veja se dia e mês tem dois dígitos, e ano, quatro.
Tem sim. Estou testando sempre assim pra evitar mais um erro.
Isso não é prioridade não. Eu posso muito bem apenas inserir como String, que se eu fosse calcular
algo por uma determinada data, daria certo como String mesmo. Mas é que eu quero evitar redundâncias futuramente.
Estranho dar erro sem ter o setLenient…
Pode postar a exata mensagem de erro que deu?
[quote=dark123]Eu estou tendo problema ao inserir data.
[code] String dia;
String mes;
String ano;
String dataProducao;
dia = boxDia.getSelectedItem().toString();
mes = boxMes.getSelectedItem().toString();
ano = boxAno.getSelectedItem().toString();
dataProducao = dia+ "/" +mes+ "/" +ano;
Date data = null;
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
try {
data = format.parse(dataProducao);
} catch (ParseException ex) {
ex.printStackTrace();
}[/code]
Não está aceitando o formato.[/quote]
Daí é só colocar isso abaixo do try, para inserir em modo Date no banco:
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
dataProducao = format.format(data);
Pronto, resolvido!!!
Obrigado a todos por ajudar.
Se alguém digita números, o Java não entende que é números?
De jeito nenhum?
Por que?
Grato.
Cláudio.