GetTimeinMillis dando un valor negativo

Esta es mi cita

Thu Feb 20 18:34:00 GMT+5:30 2014 

Cuando uso getTimeInMillis () estoy obteniendo un valor negativo (-5856679776000). Debe ser algo positivo. puede alguien decirme por que?

La fecha almacenada es decir, cal1 está dando un valor negativo mientras que la segunda fecha, es decir, la fecha actual es positiva.

 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",java.util.Locale.getDefault()); try { java.util.Date d = format.parse(date+" "+time); GregorianCalendar cal1 = new GregorianCalendar(d.getYear(), d.getMonth(), d.getDay(), d.getHours(), d.getMinutes()); Calendar cal = Calendar.getInstance(); GregorianCalendar cal2 = new GregorianCalendar(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE)); Toast.makeText(getApplicationContext(), "Stored date " + d + "\nCurrent date " + cal.getTime() + "\nStored date in ms :" + cal1.getTimeInMillis() + "\nCurrent time in ms :" + cal2.getTimeInMillis()+ "\nDifference " + ((cal1.getTimeInMillis()-cal2.getTimeInMillis())/1000), Toast.LENGTH_LONG).show(); } catch(Exception e) { Toast.makeText(getApplicationContext(),"Date parsing error", Toast.LENGTH_LONG).show(); e.printStackTrace(); } 

reemplazar

 new GregorianCalendar(d.getYear(), d.getMonth(), d.getDay(), d.getHours(), d.getMinutes()); 

con

 new GregorianCalendar(1900+d.getYear(), d.getMonth(), d.getDay(), d.getHours(), d.getMinutes()); 

Compruebe la documentación del método getYear. Retorna años después de 1900 … Y la segunda causa ya ha sido identificada por @Pakspul ..

Debe intercambiar cal1 y cal2 en su cálculo de milisegundos. Por ejemplo:

 startdate = 12:00 enddate = 12:01 diff = enddate - startdate; // result is 1 minute diff = startdate - enddate; // result is -1 minute 

Lo que está haciendo aquí es que está llamando cal2 después de cal1 por lo que tendrá un valor definatly mayor que cal1 porque tiene el tiempo mostrecent, por lo tanto, el valor del resultado negativo.

Sólo tienes que cambiarlos e intentarlo de nuevo así:

  Toast.makeText(getApplicationContext(),"Stored date "+d+"\nCurrent date "+cal.getTime()+"\nStored date in ms :"+cal1.getTimeInMillis()+"\nCurrent time in ms :"+cal2.getTimeInMillis()+"\nDifference "+((cal2.getTimeInMillis()-cal1.getTimeInMillis())/1000), Toast.LENGTH_LONG).show(); } 
  • Android ImageButton no muestra la imagen, aunque es visible en la vista previa de Designer
  • Servicio que no se está creando (o que se conecta) después de bindService ()
  • Intermittent Connection Reset by Peer errores en Android conexión a .NET REST punto final
  • BroadcastReceiver para ACTION_MEDIA_BUTTON no funciona
  • Android: java.net.DatagramSocket.bind: Excepción de argumento no válido
  • Echoprint codegen para Java / Android
  • ¿Cómo ocultar el teclado suave desde el interior de un fragmento?
  • Cómo convertir los segundos en este formato "HH: mm: ss"
  • Convertir el número decimal json a corto con valor hexadecimal
  • Android Design Navigation Drawer - ¿Cómo agregar un conmutador en el navegador xml?
  • ¿Cuál es la forma correcta de manejar suscripciones en RxJava / RxAndroid para un ciclo de vida de actividad?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.