Alguém sabe qual biblioteca java manipula a data apenas com mês e ano (usando números).
“01/2012”, etc…
preciso salvar o dado no banco em uma coluna do tipo int(x).
abraços.
Alguém sabe qual biblioteca java manipula a data apenas com mês e ano (usando números).
“01/2012”, etc…
preciso salvar o dado no banco em uma coluna do tipo int(x).
abraços.
pode pegar a String do mes ou ano com o SimpleDateFormat, formatando a data pegando apenas o mes ou o ano…
ou então ao invez de usar um Date use um Calendar que voce pode pegar direto o int por Exemplo calendar.get(Calendar.Month);
Nem precisa pegar um por um pega tudo o que quer de uma vez veja o codigo abaixo:
public static void main(String[] args) {
SimpleDateFormat sf = new SimpleDateFormat("Myyyy");
Calendar cal = Calendar.getInstance();
cal.set(2012, 11, 5); //atencao aqui o mes é 12 mas ta como 11!!!!
int dataParaGravar = Integer.parseInt(sf.format(cal.getTime()));
System.out.println(dataParaGravar);
}
Só especificando:
SimpleDateFormat sdf = new SimpleDateFormat("FORMATO QUE VOCÊ QUER")
//ou seja
SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy")
Pronto, agora você tem o formato.
Digamos que vai guardar o valor da data, então:
Date data = sdf.parse("01/2000");
E pra apresentar só o que você quer,
JOPtionPane.showMessageDialog(null, sdf.format(data)); // format converte em string com o formato que você declarou...
Calendar (nativo do Java) e Joda-Time (muito difundida).
Se a manipulação da data for tão simples quanto você disse, use o próprio Calendar. Quanto menos dependências seu projeto tiver, melhor, caso contrário, muitos tipos de manipulações, aconselho o Joda-time.
Bom, o amigo disse que quer guardar o dado como um int no banco, se o mesmo passar dois MM para o formato ele vai ter por exemplo
tenta colocar isso ae dentro de uma variavel int, e depois me conta o que acontece com esse zero ae na frente!
nem vamos fazer mistérios né… Isso é um numero octal, e vai dar uma dorzinha de cabeça, principalmente se estiver fazendo hora extra e o chefe quiser saber por que esta dando a louca na hora de gravar a data como int no banco…
por isso que deve usar somente um “M”, no pattern para não dar esse “pequeno” problema.
[quote=Alberto Cerqueira]Alguém sabe qual biblioteca java manipula a data apenas com mês e ano (usando números).
“01/2012”, etc…
preciso salvar o dado no banco em uma coluna do tipo int(x).
abraços.
[/quote]
O tipo de objeto que você usa na aplicação não tem que ser nem sequer parecido com a forma que você salva esse objeto no banco ou em arquivo.
Use no Java o Calendar ou o Joda-Time, como já foi sugerido, e gere você mesmo o int para o banco usando os métodos apropriados (como get(Calendar.MONTH) e get(Calendar.YEAR)). Isso facilitará comparações e cálculos de tempo.
Quem deve fazer a conversão da classe de negócio para o formato em que é gravado é o DAO.
De qualquer forma, eu não gravaria apenas um int, mas um tipo DATETIME no banco também. Ou, pelo menos, dois ints em duas colunas. Caso contrário, você está ferindo a primeira forma normal, o que equivale a ter dificuldade na hora de fazer buscas (e com certeza alguém vai querer filtrar coisas por datas cedo ou tarde).
Se for para gravar um int, eu usaria uma forma similar a que os bancos usam hoje. Defina como valor a quantidade de meses desde Jan/1970 (as APIs de calendário calculam essa quantidade para você). Assim também ficará relativamente simples fazer buscas por dias em períodos de tempo.
Usei a DateUtils.
abraços.