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?
- Esta clase Handler debe ser estática o pueden producirse fugas: handler final
- Quitar el prefijo de URL de String (http: /, www, etc.)
- La clase interna puede acceder pero no actualizar los valores - AsyncTask
- Loop no es capturar duplicados y eliminarlos en Android (Java)
- Cómo evitar que aparezca automáticamente el teclado de Android cuando comience la actividad
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(); }
- Rehacer la solicitud anterior cuando el primero falla con 401 No autorizado
- Vista previa de la cámara Android con filtro de color
- Fecha de creación del archivo en android
- Estados dibujables con colores (no dibujables)
- AnimatedVectorDrawable en la biblioteca de soporte y animación de "pathData"
- Cómo comprobar si un hilo de Android está en ejecución
- Cómo probar menú en Android con Robolectric
- Cambiar el ícono del botón Drawable de Android mediante programación
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(); }
- Botón de forma triangular para la actividad de Android
- Cubierta del teclado de Android EditText cuando hago clic en él segunda vez