¿Cómo comparar dos marcas de tiempo en android?

Quiero comparar dos marcas de tiempo y si la diferencia de eso es (- + 5minuts) entonces quiero mostrar diálogo de alerta.

es decir Si actualmente en nuestro reloj 4PM la segunda vez es 4.05PM o 3.55PM entonces alerta mostrará no.

¿Puede alguien sugerirme la manera cómo puedo conseguir la solución de esto. ??

Encontré después de buscar la función de obtener timeStamp y cómo comparar dos marcas de tiempo, pero para este tipo de condición hay algún método o función?

Gracias.

Mi código es: –

date= new Date(); currentTime = date.getTime(); if(currentTime !=0 && previousTime !=0){ String result = (String) DateUtils.getRelativeTimeSpanString(currentTime, previousTime, 0); } 

Y estoy almacenando la hora actual en el tiempo anterior lilke tis manera: –

 if(currentTime != previousTime){ previousTime = currentTime; } 

Hay dos enfoques que podría tomar, dependiendo de si sólo desea medir el tiempo transcurrido, o desea establecer futuros tiempos para comparar.

La primera es similar a la respuesta de Sourabh Saldi, registra el resultado de

 long prevEventTime = System.currentTimeMillis(); 

luego compararlo con System.currentTimeMillis () hasta que la diferencia sea superior a 300000

Como usted ha mencionado, su timestamp del servidor está en milisegundos desde el 1 de enero de 1970. Esto significa que es directamente comparable a System.currentTimeMillis (). Como tal, utilice:

 long serverTimeStamp=//whatever your server timestamp is, however you are getting it. //You may have to use Long.parseLong(serverTimestampString) to convert it from a string //3000(millliseconds in a second)*60(seconds in a minute)*5(number of minutes)=300000 if (Math.abs(serverTimeStamp-System.currentTimeMillis())>300000){ //server timestamp is within 5 minutes of current system time } else { //server is not within 5 minutes of current system time } 

El otro método se parece más a lo que ya estás haciendo – utilizando la clase Date para almacenar el tiempo actual y comparado. Para usarlos, deberás usar la clase GregorianCalendar para manejarlos. Vocación

 calendar=new GregorianCalendar(); 

creará un nuevo calendario y establecerá automáticamente la fecha en la hora actual del sistema. También puede utilizar todas las funciones suministradas en la clase GregorianCalendar para desplazar el tiempo hacia delante o hacia atrás utilizando algo del formulario

 calendar.add(GregorianCalendar.MINUTE, 5); 

o establecerlo en el tiempo de un objeto Date con

 calendar.setTime(date); 

En su caso, dependiendo de la flexibilidad que desee tanto la clase GregorianCalendar como la clase Date tienen métodos after (), es probable que desee algo como lo siguiente:

Crear en alguna parte:

 Date currentDate=newDate(); 

A continuación, establezca su punto de alarma:

 calendar=new GregorianCalendar(); //this initialises to the current system time calendar.setTimeInMillis(<server timestamp>); //change to whatever the long timestamp value from your server is calendar.add(GregorianCalendar.MINUTE, 5); //set a time 5 minutes after the timestamp Date beforeThisDate = calendar.getTime(); calendar.add(GregorianCalendar.MINUTE, -10); //set a time 5 minutes before the timestamp Date afterThisDate = calendar.getTime(); 

A continuación, compruebe si la hora actual ha superado el punto de alarma configurado con

 currentDate.setTime(System.currentTimeMillis()); if ((currentDate.before(beforeThisDate))&&(currentDate.after(afterThisDate))){ //do stuff, current time is within the two dates (5 mins either side of the server timestamp) } else { //current time is not within the two dates } 

Este enfoque puede parecer un poco más largo, pero usted encontrará que es muy robusto y flexible, y se puede ampliar fácilmente para establecer puntos de alarma en el futuro, o utilizar los métodos de GregorianCalendar para fijar fácilmente las fechas horas, días o semanas en el futuro.

¿Qué tal sólo:

 private static final long FIVE_MINUTES = 1000 * 60 * 5; //5 minutes in milliseconds long currentTime = new Date().getTime(); long previousTime = mPreviousTime; if ((currentTime - previousTime < FIVE_MINUTES && currentTime - previousTime > -FIVE_MINUTES ){ // under +/-5 minutes, do the work }else{ // over 5 minutes } 
  long etime = 0; final long time1 = uptimeMillis(); /* do something */ final long time2 = uptimeMillis(); if (time2 < time1) { etime = Long.MAX_VALUE - time1 + time2; } else { etime = time2 - time1; } 

entonces compruebe este etime y haga como requerido! 1

Joda tiempo le ayudará con esta tarea.

 import org.joda.time.Interval; 

http://joda-time.sourceforge.net/

Utilice este método para cambiar sus fechas en formato de época

 public Long getChnagedDate(Activity act,String date) throws ParseException { long epoch = new java.text.SimpleDateFormat ("MM/dd/yyyy HH:mm:ss aa").parse(date).getTime(); return epoch/1000; } 

y después de comprobar la diferencia en http://www.epochconverter.com . Espero que te ayude.

  • Java calcular el tiempo entre dos timestamps
  • ¿Cómo obtengo las siguientes marcas de tiempo exactas hasta 5 micro segundos en android
  • ¿Cómo usar la marca de hora del servidor Firebase para generar la fecha creada?
  • Insertar una marca de tiempo en la base de datos a través de ContentValues
  • ¿Se convierte la cadena de fecha en timestamp en Android?
  • La fecha y hora muestran datos erróneos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.