Boa noite,
Tenho a seguinte situação:
Estou gravando no mysql a data assim:
DateFormat dateFormatada = new SimpleDateFormat("dd/MM/yy");
Date date = new Date();
String dataFormatada = dateFormatada.format(date);
Só que quando vai gravar, grava assim: [size=18]2028-09-12 00:00:00[/size]
No banco está timestamp.
O ano ta saindo errado, ta 2028 em vez de 2012
Várias dúvidas aí: 
Onde esta o codigo que salva no banco? É JDBC? Hibernate? Pq ta na area “Android e JME”?
Não entendi exatamente o que voce esta salvando no banco. A String? O date?
Lembre-se que se voce estiver salvando o date, a data retornada por esse format é do tipo java.util.date e a data que voce salva é do tipo java.sql.date. Desse modo voce vai ter que criar um novo java.sql.date e passar o timeInMiliss do java.sql.date. Pelo menos esse é o jeito mais simples quando é preciso fazer essa conversao.
É Android mesmo. To usando MySql, o código que grava é esse:
java.util.Date dataUtil = new java.util.Date();
java.sql.Date dataSql = new java.sql.Date(dataUtil.getTime());
DateFormat dateFormatada = new SimpleDateFormat("dd/MM/yy");
Date date = new Date();
String dataFormatada = dateFormatada.format(date);
parametrosPost.add(new BasicNameValuePair("data",dataFormatada.toString()));
Quero gravar o dd/mm/yyyy só que ta gravando com o ano errado. O dia e o mês estão certos
Bom, eu nao entendo muito de android(embora ja tenha passado poucas e boas por causa desses dates), mas vamos la. Qual o valor que está nesse teu dataFormatada.toString()?
Na verdade, na verdade, o codigo que grava não deve ser esse né. Como falei, nao entendo de android, mas pelo que posso ver isso aí vai fazer uma requisição no lado do servidor para salvar esse negocio. Mas o codigo que salva mesmo teoricamente é pra estar do lado do servidor.
PS: Não é impossivel que eu esteja falando besteira 
edit: Eu olhei o doc desse teu BasicNameValuePair. Nada de mais, era realmente o unico ponto que eu nao entendia por ser especifico de android, e pelo que vi nao tem nada de mais nele. Enfim, voce tem que procurar a raiz do problema. Se antes de enviar a tua requisicao esse teu dataFormatada.toString()(alias, isso é uma redundancia, pq o dataFormatada ja é uma String) já estiver errado, o problema está nesse codigo que voce postou. Se não(o que eu acho realmente mais provável), o problema esta no lado do servidor, em como os parametros da tua requisicao estao sendo manipulados.
O certo seria no lado do teu servidor ter outro SimpleDateFormat que pega esse teu parametro, converte pra java.util.date, depois seta em um java.sql.date e salva no banco.
Porque o ano está errado? Quero gravar a data do sistema e está gravando: [size=18]2028-09-12 00:00:00[/size]. Peguei no LogCat. Não entendi o que está acontecendo.
se não me engano vc deve passar para o SQLite no seguinte formato
dá uma olhada na doc do sqlite, talvez ajude
http://www.sqlite.org/datatype3.html#datetime
Eu troco essa linha:
DateFormat dateFormatada = new SimpleDateFormat("dd/MM/yy");
Por essa:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
A princípio é isso?
[quote=fbrigatt]Eu troco essa linha:
DateFormat dateFormatada = new SimpleDateFormat("dd/MM/yy");
Por essa:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
A princípio é isso?[/quote]
isso
Ok, vou testar e ja posto. Um minuto. Testei. A data gravou certa, mas a hora gravou errada:
[size=18] 2012-09-28 13:35:22 [/size]
No mysql a data esta do tipo TIMESTAMP, está certo?
[quote=fbrigatt]Ok, vou testar e ja posto. Um minuto. Testei. A data gravou certa, mas a hora gravou errada:
[size=18] 2012-09-28 13:35:22 [/size][/quote]
como assim a hora está errada ?
Agora são 10:45, gravou 13:35. Ele pegou a data do emulador, certo?
eu tenho um método que chamo para pegar a hora para salvar no banco, vê se te ajuda:
static public String getDataHora()
{
// pega o formato da Data e Hora
final SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
// instancia o calendario
final Calendar mCalendario = Calendar.getInstance();
mCalendario.setTimeInMillis(System.currentTimeMillis());
// retorna a Data e Hora de gravacao
return formato.format(mCalendario.getTimeInMillis());
}
Ok, obrigado pela dica. Como chamo esse método?
coloca ele em alguma classe aí (ele é static) então:
se quiser algo mais simples, acho que
faria o trabalho para você
aechiara,
Valeu mesmo. Só pra encerrar, não entendi esse:
String agora = SuaClasseDeUtilitarios.getDataHora()
Esse SuaClasseDeUtilitarios, o que seria?
Será que não porque gravou a data do emulador? Com esse código vai gravar a hora certa?
[quote=fbrigatt]aechiara,
Valeu mesmo. Só pra encerrar, não entendi esse:
String agora = SuaClasseDeUtilitarios.getDataHora()
Esse SuaClasseDeUtilitarios, o que seria?
Será que não porque gravou a data do emulador? Com esse código vai gravar a hora certa?[/quote]
não entendi, vc fez com o Date e funcionou ?
o SuaClasseDeUtilitarios é caso vc tivesse algum código que vc precisa chamar várias vezes, ao invés de vc ficar copiando e colando vc cria uma classe utilitária e toda vez que vc precisar daquele código, sei lá, mostrar uma mensagem em um Alert, mostrar um Toast, ou pegar a hora do sistema, você chama o método da classe utilitária
Eu fiz assim:
java.util.Date dataUtil = new java.util.Date();
java.sql.Date dataSql = new java.sql.Date(dataUtil.getTime());
// DateFormat dateFormatada = new SimpleDateFormat("dd/MM/yy"); Estava com essa linha
SimpleDateFormat dateFormatada = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // Coloquei essa
Date date = new Date();
String dataFormatada = dateFormatada.format(date);
Aqui passo a data formatada como parâmetro para gravar:
parametrosPost.add(new BasicNameValuePair("data",dataFormatada.toString()));
Ai, a data gravou certa mas a hora gravou errada, entendeu?
[quote=fbrigatt]Eu fiz assim:
java.util.Date dataUtil = new java.util.Date();
java.sql.Date dataSql = new java.sql.Date(dataUtil.getTime());
// DateFormat dateFormatada = new SimpleDateFormat("dd/MM/yy"); Estava com essa linha
SimpleDateFormat dateFormatada = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // Coloquei essa
Date date = new Date();
String dataFormatada = dateFormatada.format(date);
Aqui passo a data formatada como parâmetro para gravar:
parametrosPost.add(new BasicNameValuePair("data",dataFormatada.toString()));
Ai, a data gravou certa mas a hora gravou errada, entendeu?[/quote]
vc não fez o que eu falei, troca a linha por:
Trocar essa:
java.util.Date dataUtil = new java.util.Date();
Por essa:
java.util.Date dataUtil = new java.util.Date(System.currentTimeMillis());
Isso? Uma dúvida, eu posso inverter o formato para gravar dd/mm/yyyy?
[quote=fbrigatt]Trocar essa:
java.util.Date dataUtil = new java.util.Date();
Por essa:
java.util.Date dataUtil = new java.util.Date(System.currentTimeMillis());
Isso? Uma dúvida, eu posso inverter o formato para gravar dd/mm/yyyy?[/quote]
O resultado será o mesmo. E sim, pode. Pra isso tem a classe DateFormat ou inverter no banco.