Archivo del sitio

Unparseable Date ParseException (String to Date)

Hace unos minutos tuve un pequeño problema con unos parseo de String a fecha, y googleando unos cuantos minutos me di cuenta que muchos tenían el mismo drama, hasta que encontre la solución leyendo unos ejemplos muy completos.

http://www.herongyang.com/JDK/Date-String-java-util-SimpleDateFormat-Parse-to-Object.html

Para que no se den la molestia de leer todo eso xD , les traigo aqui una solución simple.

Cuando queremos parsear un String a un Date tenemos que usar un objeto de la clase SimpleDateFormat  donde se setea una Mascara o un Pattern como quieran llamarlo. Es la estructura de una fecha como “yyyy/MM/dd” por ejemplo. Para parsear un String a Date debemos tener exactamente el mismo pattern del String que queremos transformar a fecha.

Para hacerlo mas claro aqui tenemos un ejemplo:

Quería transformar el siguiente String a Date

String fec = "Fri Apr 08 00:00:00 CLT 2011";

Intentaba hacerlo de esta forma


SimpleDateFormat formatoDelTexto = new SimpleDateFormat("yyyy/MM/dd",Locale.ENGLISH);
 String fec = "Fri Apr 08 00:00:00 CLT 2011";

 Date nuevo = (Date) formatoDelTexto.parse(fec);

Que me salia en ese momento

“Exception in thread “main” java.text.ParseException: Unparseable date: “Fri Apr 08 00:00:00 CLT 2011″
at java.text.DateFormat.parse(DateFormat.java:337)
at test.Test.main(Test.java:46)”

Para solucionar este drama debemos elegir el pattern exacto del string que queremos parsear.


SimpleDateFormat formatoDelTexto = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.ENGLISH);
String fec = "Fri Apr 08 00:00:00 CLT 2011";
Date nuevo = (Date) formatoDelTexto.parse(fec);

Y listo nos creara el objeto date a partir del String sin problemas, ahora si queremos cambiar el formato del Date, basta con aplicar el format del SimpleDateFormat a nuestra manera. Por ejemplo queremos que esa fecha se imprima asi 2012/06/06


SimpleDateFormat otroFormato = new SimpleDateFormat("yyyy/MM/dd",Locale.ENGLISH);
 System.out.println("FEcha : \n" + otroFormato.format(nuevo));

Y eso es todo.

Cualquier duda a los comentarios.

Anuncios

Conectar Base datos MySql con Java[JDBC]

Clase para conectar una base de datos mysql en java, usando la libreria mysql.

Creada en clases de  tópicos avanzado de programación  [By Soma].

/**
*
* @author Soma
*

*
*/
package BD;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class BD {
private String user;
private String password;
private String url;
private String driverClassName;
private Connection conn = null;
private Statement stmt;

public BD(String user, String password, String url, String driverClassName) {
this.user = user;
this.password = password;
this.url = url;
this.driverClassName = driverClassName;
}
public BD()
{
this.user = "root";
this.password="tupass";
this.url = "jdbc:mysql://localhost/tu_basedatos";
this.driverClassName = "com.mysql.jdbc.Driver"; // driver
}
public String getPassword() {
return password;
}

public String getUrl() {
return url;
}

public String getUser() {
return user;
}

public void setPassword(String password) {
this.password = password;
}

public void setUrl(String url) {
this.url = url;
}

public Connection getConn() {
return conn;
}

public void setConn(Connection conn) {
this.conn = conn;
}

public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}

public String getDriverClassName() {
return driverClassName;
}

public void setUser(String user) throws SQLException {
this.user = user;
}

public void conectar() throws SQLException {
try {
Class.forName(this.driverClassName).newInstance();
this.conn = DriverManager.getConnection(this.url, this.user, this.password);

} catch (Exception err) {
System.out.println("Error " + err.getMessage());
}
}

public ResultSet obtenerDatos(String sql) throws SQLException {

this.stmt = conn.createStatement();
return this.stmt.executeQuery(sql);
}

public void actualizar(String sql) throws SQLException {
this.stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
public ResultSet ExeGet(String Q) throws SQLException{
Statement st = this.conn.createStatement();
return (ResultSet) st.executeQuery(Q);
}
public int Exe(String Q) throws SQLException{
Statement st = this.conn.createStatement();
return st.executeUpdate(Q);
}

public void Off() throws SQLException{
this.conn.close();
}

}

Clase para Enviar Correos desde Java [JavaMail]

Clase Creada para enviar Correos desde Java usando
la libreria JavaMail que la pueden
descargar desde aqui:
DESCARGAR

/*

* Autor: Pablo Videla
* Fecha: 21/07/2009 18:14
*/

package Mail;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JOptionPane;

public class Mail
{
private String host;
private String usuario;
private String password;
private String puerto;
private String auth; //boolean
private String conexionSegura; // boolean
private String CorreoVictima;
private String CorreoFalso;
private String nombreFalso;
private String mensaje;
private String asunto;
public Mail()// constructor sin parametros
{
}
// constructor con todos los parametros
public Mail(String host, String usuario, String password, String puerto, String auth, String conexionSegura, String CorreoVictima, String CorreoFalso, String nombreFalso, String mensaje,String asunto) {
this.host = host;
this.usuario = usuario;
this.password = password;
this.puerto = puerto;
this.auth = auth;
this.conexionSegura = conexionSegura;
this.CorreoVictima = CorreoVictima;
this.CorreoFalso = CorreoFalso;
this.nombreFalso = nombreFalso;
this.mensaje = mensaje;
this.asunto = asunto;

}
// constructor sin el nombre falso
public Mail(String host, String usuario, String password, String puerto, String auth, String conexionSegura, String CorreoVictima, String CorreoFalso, String mensaje,String asunto) {
this.host = host;
this.usuario = usuario;
this.password = password;
this.puerto = puerto;
this.auth = auth;
this.conexionSegura = conexionSegura;
this.CorreoVictima = CorreoVictima;
this.CorreoFalso = CorreoFalso;
this.mensaje = mensaje;
this.asunto = asunto;
}
// constructor sin el correo y el nombre falso
public Mail(String host, String usuario, String password, String puerto, String auth, String conexionSegura, String CorreoVictima, String mensaje,String asunto) {
this.host = host;
this.usuario = usuario;
this.password = password;
this.puerto = puerto;
this.auth = auth;
this.conexionSegura = conexionSegura;
this.CorreoVictima = CorreoVictima;
this.mensaje = mensaje;
this.asunto = asunto;
}
public String getAsunto()
{
return asunto;
}
public void enviarMensaje()
{
try
{
// Propiedades de la conexión
Properties props = new Properties();
props.setProperty("mail.smtp.host",""+ getHost()); // host del server
props.setProperty("mail.smtp.starttls.enable",""+ getConexionSegura());//seguridad?
props.setProperty("mail.smtp.port", ""+getPuerto());// puerto en mi caso 25
props.setProperty("mail.smtp.user",""+ getUsuario());//cualquier cosa
props.setProperty("mail.smtp.auth", getAuth());//no necesita identifiacion

// Preparamos la sesion
Session session = Session.getDefaultInstance(props);
// Construimos el mensaje
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(""+getCorreoFalso()));

message.addRecipient(
Message.RecipientType.TO,
new InternetAddress(""+getCorreoVictima()));
message.setSubject(""+getAsunto());
// message.setContent(""+getMensaje(),"text/ht ");
message.setHeader("text/html","charset=iso-8859-1");
message.setContent(getMensaje(),"text/html; charset=iso-8859-1");

// Lo enviamos.
Transport t = session.getTransport("smtp");
//  t.connect("127.0.0.1", null, null);
// t.connect("localhost",null,null);
t.connect(""+getUsuario(),""+getPassword());
//   for(int i=0;i<5;i++){
t.sendMessage(message,message.getAllRecipients());//funciona con ciclos
JOptionPane.showMessageDialog(null, "¡Enviado Correctamente a "+getCorreoVictima()+" !");
//   }
// Cierre.
t.close();
}
catch (Exception e)
{
e.printStackTrace();
// e.getMessage();
JOptionPane.showMessageDialog(null, "Error ... "+ e.getMessage());
}
}

public String getCorreoFalso() {
return CorreoFalso;
}

public void setCorreoFalso(String CorreoFalso) {
this.CorreoFalso = CorreoFalso;
}

public String getCorreoVictima() {
return CorreoVictima;
}

public void setCorreoVictima(String CorreoVictima) {
this.CorreoVictima = CorreoVictima;
}

public String getAuth() {
return auth;
}

public void setAuth(String auth) {
this.auth = auth;
}

public String getConexionSegura() {
return conexionSegura;
}

public void setConexionSegura(String conexionSegura) {
this.conexionSegura = conexionSegura;
}

public String getHost() {
return host;
}

public void setHost(String host) {
this.host = host;
}

public String getMensaje() {
return mensaje;
}

public void setMensaje(String mensaje) {
this.mensaje = mensaje;
}

public String getNombreFalso() {
return nombreFalso;
}

public void setNombreFalso(String nombreFalso) {
this.nombreFalso = nombreFalso;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getPuerto() {
return puerto;
}

public void setPuerto(String puerto) {
this.puerto = puerto;
}

public String getUsuario() {
return usuario;
}

public void setUsuario(String usuario) {
this.usuario = usuario;
}

}
A %d blogueros les gusta esto: