1

Buen día, yo estoy usando un campo String que se llama "fecha_ini" y contiene una fecha en el siguiente formato "01-02-2018". Lo que necesito es sumarle un día a esta fecha, pero para eso primero tengo que castearla de String a Date si no me equivoco. Para hacer el casteo intenté lo siguiente, pero me tira error:

    fecha_ini = "01-02-2018";

    try
    {
        String fecha = fecha_ini;
        SimpleDateFormat format1 = new SimpleDateFormat("dd-MM-aaaa");
        java.util.Date dateOjb = format1.parse(fecha);
        SimpleDateFormat format2 = new SimpleDateFormat("dd/MM/aaaa");
        nuevaFecha = format2.format(dateOjb);
        Toast.makeText(this,nuevaFecha , Toast.LENGTH_SHORT).show();
    }catch(ParseException e){
    }

El error es este:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference

Lo estoy haciendo bien o hay otra manera quizás más sencilla de convertir el campo "fecha_ini" a Date? Para luego poder trabajar con el resultado y sumarle dias.

Muchas gracias.

Diego
  • 5,603
  • 1
  • 15
  • 38
Rodrigo
  • 107
  • 2
  • 11
  • Buenos días @Rodrigo, probando tu código el error que realmente me llega a generar es que no se puede parsear, esto se debe a que en el formato que definiste `SimpleDateFormat format1 = new SimpleDateFormat("dd-MM-aaaa");` , en donde las "aaaa" deberian ser "yyyy" refiriendose a year del formato algo similar a esto, `SimpleDateFormat format1 = new SimpleDateFormat("dd-MM-yyyy");` – Nicethunder Nov 29 '18 at 14:48
  • gracias por responder @Nicethunder, tenes razón fue error mío, lo corregí pero de todas formas me sigue fallando por lo mismo. – Rodrigo Nov 29 '18 at 14:50
  • de nada, si te refieres al error que muestra de java.lang.NullPointerException, esto se estaría muy probablemente generando en otro lugar de tu código ya que dice que intentas usar el método String.length() sobre un objeto que no esta iniciado osea con referencia nula, aquí en stack existe una respuesta excelente del usuario @Pikoh sobre el tema de los NullPointerException que te recomendaría que mires, aquí te dejo el enlace de eso https://es.stackoverflow.com/questions/75999/qu%C3%A9-es-una-nullreferenceexception-y-c%C3%B3mo-solucionarla/76000#76000 – Nicethunder Nov 29 '18 at 15:00
  • @Rodrigo el error que comentas definitivamente no tiene que ver con el código, agrega el código donde llamas el método length(). – Jorgesys Nov 29 '18 at 19:55

2 Answers2

0

Puedes probar lo siguiente:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strDate = "2000-01-01";
Date date = new Date(sdf.parse(strDate).getTime());
  • Y como me doy cuenta si funcionó? – Rodrigo Nov 29 '18 at 14:47
  • solo poner código sin explicar por qué esto soluciona la pregunta es confuso – Rene Limon Nov 29 '18 at 20:41
  • Bienvenido a StackOverflow. Aplaudo la buena intención de ayudar al escribir una respuesta. Te invito a leer [answer], pues en su estado actual a tu respuesta le hace falta una explicación, que puede ser breve, de cómo esto resuelve el problema. También debes asegurarte de haber entendido correctamente ese problema que el usuario tiene y, si si pregunta no está clara, pedir las aclaraciones correspondientes y esperar a que lo sea para responder. Por ejemplo, en este caso, el usuario menciona un NullPointerException y tu respuesta no cubre ese aspecto. Un saludo. – jachguate Nov 29 '18 at 23:43
0

Puedes agregar esto para añadir un dia a la fecha

Date dt = new Date();
Calendar c = Calendar.getInstance(); 
c.setTime(dt); 
c.add(Calendar.DATE, 1);
dt = c.getTime();

o simplemente hacer esto

Date today = new Date();
Date tomorrow = new Date(today.getTime() + (1000 * 60 * 60 * 24));

Este ejemplo esta echo en Kotlin, solo editalo a Java

 val date = Date()
 val c = Calendar.getInstance()
 c.time = date
 c.add(Calendar.DATE, 1)
 val simpleDateFormat1 = SimpleDateFormat("dd-MM-yyyy", Locale.US)
            val todayCalendar = simpleDateFormat1.format(c.time)
Log.i("TAG", "" + todayCalendar)
Devix
  • 242
  • 1
  • 9
  • gracias por responder @Devix, cuando lo hago de la manera que me pusiste arriba, en la primer línea le agregué una fecha cualquiera para probar, entonces quedó así: Date dt = new Date(01-04-2000); Y al final le hago un Toast para ver el resultado, que debería ser: 02-04-2000, pero me lo muestra de esta manera: Fri Jan 02 20:59:57 GMT-03:00 1970 – Rodrigo Nov 29 '18 at 19:39
  • 1
    acabo de editar la respuesta, revisala con eso debe funcionar, cualquier duda aquí estamos suerte :) – Devix Nov 29 '18 at 23:04