ayuda error cannot format given object as a date

publicado por: Anonymous
 Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given      
Object as a Date
at java.text.DateFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at examen.rutina.RutinaArchivos.obtenerNombreZip(RutinaArchivos.java:85)
at examen.rutina.RutinaArchivos.main(RutinaArchivos.java:80)

esta es mi clase en la que ejecuto

 public class RutinaArchivos {



public static void main(String[] args) {

    GestorTexto gTexto = GestorTexto.getInstance();
    GestorSerialJava gSerial = GestorSerialJava.getInstance();
    GestorXml gXML = GestorXml.getInstance();

    FileUtils fUtils = FileUtils.getInstance();
    String rutaCarpeta = "C:/reportes";
    fUtils.crearCarpetaSiNoExiste(rutaCarpeta);

    // litsa de los objetos
    List<Dispositivo> listaDispositivo = new ArrayList<Dispositivo>();
    listaDispositivo.add(new Movil("ABC123", new Date(), "Samsung",
            "galaxy s7", 'n', true, 'e', "1225616"));
    listaDispositivo.add(new Enrutador("XSD45", new Date(), "IPHONE", "6S",
            'C', true, 153, "1235.15.", 15));

    // definjir ruta
    String rutacarpeta = "C:/reportes/";
    String rutaReporte = rutacarpeta + "reporte.txt";
    final String SEPARADOR_LINEA = System.getProperty("line.separator");

    // crear  archivo de texto
    StringBuilder contenido =  new StringBuilder();
    contenido.append("numero de dispositivos encontrados")
    .append(listaDispositivo.size())
    .append(SEPARADOR_LINEA)
    .append("fecha de resporte:")
    .append(obtenerfecharepo())
    .append(SEPARADOR_LINEA)
    .append("codigotDispositivotTipotMarcatModelo")
    .append(SEPARADOR_LINEA);
    System.out.println(contenido);
    //Recorrer 
    for (Dispositivo d : listaDispositivo) {
        contenido.append(d).append(SEPARADOR_LINEA);
        //guarda  xml  y ser
        if (d instanceof Movil) {
            gXML.escribirArchivo(rutaCarpeta+ ".xml",d);
            gSerial.escribirArchivo(rutaCarpeta+ ".ser",d);
        }

    }
    System.out.println(contenido);

    // guardar el archivo
    gTexto.escribirArchivo(rutaReporte, contenido.toString());

    //hacer reporte
    String rutaRespaldo ="c:/respaldo/";
    fUtils.comprimirContenidoDeCarpeta(rutaCarpeta, rutaRespaldo+obtenerNombreZip());
}

private static String obtenerNombreZip() {
 SimpleDateFormat formateador= new  SimpleDateFormat("dd-mm-yyyy");
 return formateador.format(new Date()+".zip");
}

private static Object obtenerfecharepo() {
    SimpleDateFormat formateador = new SimpleDateFormat();
    return formateador.format(new Date());
}
}

solución

El error está en el método obtenerNombreZip(). Estás concateneando ".zip" antes de formatear la fecha:

return formateador.format(new Date()+".zip");

Mas bien, hay que concatenear ".zip" después de formatear la fecha:

return formateador.format(new Date()) + ".zip";

De lo contrario, new Date()+".zip" produce un String de una vez con un valor que no es aceptado por SimpleDateFormat.format().

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *