Ref.: SimpleDateFormat

17 respostas
P

Bom dia.

Como faço para formatar (03/01/05 07:59AM) e, gravar em um campo DateTime (MySQL5)?

     Desde  agradeço.

17 Respostas

victorwss
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy hh:mma");

PreparedStatement ps = blablabla;

ps.setTimestamp(new Timestamp(sdf.parse(suaStringASerFormatada).getTime()));
P

Valeu estou testando.

Mas isso vai funcionar para AM/PM?

P

Caraca!

Valeu!

Já funcionou!

victorwss

Este “a” no SimpleDateFormat é para o AM/PM. Lá hh são as horas de 1 até 12, HH seria para as horas de 0-23.

Se você puder, eu recomendo colocar o ano com quatro dígitos. Não sei se ele irá intepretar 05 como 1905 ou como 2005. E o bug do milênio já nos mostrou que ano com dois dígitos é uma idéia ruim. Mas, se você não puder mudar isso, acho bom dar uma verificada senão você pode errar a data em cem anos.

P

Voltei!

Equivoquei-me!

Tenho isso (03/01/05 07:59AM)

E pretendo gravar sem o AM/PM

Por Exemplo:

07:59PM devo gravar 19:59:00

Obrigado mais uma vez

victorwss

prsantos:
Voltei!

Equivoquei-me!

Tenho isso (03/01/05 07:59AM)

E pretendo gravar sem o AM/PM

Por Exemplo:

07:59PM devo gravar 19:59:00

Obrigado mais uma vez

O que é gravado no mysql é a data, independente da forma como ela é mostrada. Se você ler um Timestamp de lá e formatá-lo de qualquer outra forma (com o método format do SimpleDateFormat), ele vai aparecer daquela forma.

Ou seja, o Timestamp não depende da forma como ele é exibido. Isso quem define é o SimpleDateFormat. Assim, se você ler o Timestamp com outro SimpleDateFormat, a conversão terá sido feita!

P

Perdoe-me!

Não entendi.

victorwss

prsantos:
Perdoe-me!

Não entendi.

Basicamente é isso:

SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yy hh:mma");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy HH:mm");

Date d = sdf1.parse("03/01/05 07:59PM");
System.out.println(sdf2.format(d)); // Escreve 03/01/2005 19:59.
P

Beleza!

Mas tenho mesmo que usar o Parse?

P

O problema é que estou usando GregorianCalendar.

Como “Seto” Isso (03/01/05 07:59AM) no GregorianCalendar?

//
		GregorianCalendar gc = new GregorianCalendar();
		DecimalFormat df = new DecimalFormat();
		SimpleDateFormat sdf = new SimpleDateFormat();
		DecimalFormat nf = new DecimalFormat();
		
		sdf.applyLocalizedPattern("yyyy-MM-dd HH:mm:ss");

		gc.set(2005, 01, 03, 14, 59, 00);
		
		System.out.println(sdf.format(gc.getTime()));
victorwss
prsantos:
O problema é que estou usando GregorianCalendar.

Como "Seto" Isso (03/01/05 07:59AM) no GregorianCalendar?

//
		GregorianCalendar gc = new GregorianCalendar();
		DecimalFormat df = new DecimalFormat();
		SimpleDateFormat sdf = new SimpleDateFormat();
		DecimalFormat nf = new DecimalFormat();
		
		sdf.applyLocalizedPattern("yyyy-MM-dd HH:mm:ss");

		gc.set(2005, 01, 03, 14, 59, 00);
		
		System.out.println(sdf.format(gc.getTime()));

Faz isso que daí fica beleza:

Date d = sdf.parse(blabla);
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(d);
P

Valeu!

Estou testando.

Ah!, deu um erro de conversão nisso

SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yy hh:mma");
		SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy HH:mm");

		Date d = sdf1.parse("03/01/05 07:59PM");
		System.out.println(sdf2.format(d)); // Escreve 03/01/2005 19:59.
P

Erro!

Type mismatch: cannot convert from Date to Date

Date d = sdf.parse("03/01/05 07:59AM");
		GregorianCalendar gc = new GregorianCalendar();
		gc.setTime(d);
victorwss

Eu testei aqui e esses útimos dois funcionaram perfeitamente.

Você tem um stacktrace ou qualquer coisa assim para detalhar melhor o problema?

P

Esse erro é de compilação.

Preciso transformar isso (“03/01/05 07:59AM”) em uma data.

O Problema é que o ano só tem duas posições.

Meu prazo está se esgotando.

Mas valeu!

Estou continuando a testar outras coisas.

victorwss

prsantos:
Esse erro é de compilação.

Preciso transformar isso (“03/01/05 07:59AM”) em uma data.

O Problema é que o ano só tem duas posições.

Meu prazo está se esgotando.

Mas valeu!

Estou continuando a testar outras coisas.

import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;

public class TestaData {

    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yy hh:mma");  
        SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy HH:mm");  

        Date d = sdf1.parse("03/01/05 07:59PM");  
        System.out.println(sdf2.format(d)); // Escreve 03/01/2005 19:59.
    }
}
P

Caraca MALUCO!

Muito obrigado.

O que estava errado era o import.
Sem querer usei import java.sql.Date; (SQL).

Valeu!

Abraços!

Criado 28 de abril de 2008
Ultima resposta 28 de abr. de 2008
Respostas 17
Participantes 2