Problema con SimpleDateFormat con formato 00:00:00 a.m.
Estimados,
Tengo un problema que no logro solucionar. les cuento, tengo un archivo en Excel del cual leo una celda con la siguiente información (no puedo cambiarla).
29/10/2015 03:37:47 p.m.
logro separar la fecha de la hora con el siguiente codigo.
public static String getTime(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("HHmmss", new Locale("es", "MX"));
String hora = sdf.format(date);
return hora;
}
SimpleDateFormat sdf = new SimpleDateFormat("HHmmss", new Locale("es", "MX"));
String hora = sdf.format(date);
return hora;
}
El problema que tengo es que no me reconoce el formato el 03:37:47 p.m., tanto si dice a.m. o p.m, en ambos me da resultado 033747, cuando si dice 03:37:47 p.m me debería poner 153747.
Muchas gracias de antemano por su ayuda.
- Inicie sesión o regístrese para enviar comentarios
formato sin puntos
prueba revisando el Date que recibe tu metodo si tiene el formato am/pm
esto imprime lo que quieres sin los puntos en p.m. ¿el Date acepta el formato con puntos a.m/p.m?
SimpleDateFormat sdf = new SimpleDateFormat("HHmmss" , new Locale("es", "MX"));
String hora = sdf.format(date);
System.out.println(hora); //imprime -> 153747
No hay problema sin los puntos
Gracias @julgo por tu respuesta.
Si no hay puntos en a.m / p.m todo funciona a la perfección, el problema son los puntos; pero como comentaba los valores a leer tienen los puntos y no puedo quitárselos, el programa que crea el excel únicamente tienen esa configuración.
Saludos,
Re: formato 00:00:00 a.m.
Sospecho que lo siguiente puede ser de utilidad:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) throws ParseException {
DateFormatSymbols dfs = new DateFormatSymbols();
dfs.setAmPmStrings(new String[] { "a.m.", "p.m." });
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a", dfs);
Date date = sdf.parse("29/10/2015 03:37:47 p.m.");
System.out.println(date); // Thu Oct 29 15:37:47 CST 2015
}
}
Debe tenerse en cuenta que:
H
se utiliza para horas del día (de 0 a 23)h
se utiliza para horas del día en AM/PM (de 1 a 12)¡Por si sirve de algo!
~~~
Gracias @jpaul
Claro que me sirvió!!!, había optado por crear un nuevo String quitando a.m. / p.m. y después crear un nuevo String con AM / PM según fuera el caso todo con ayuda de un if.
Pero
DateFormatSymbols
es lo que estaba buscando.Muchas gracias!