Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

234
Views
Android Java: la diferencia entre la hora actual y la hora específica en el futuro se calcula incorrectamente

Necesito la diferencia entre la hora actual y la hora específica en el futuro para poder pasar el temporizador de cuenta regresiva como parámetro. Tengo función para esta operación pero calcula mal. Aquí está mi función que calcula la diferencia.

 public Date RetriveLeftTime(Date incomingTime) { DateFormat milisFormat = new SimpleDateFormat("HH:mm:ss"); Date moment = Calendar.getInstance().getTime(); milisFormat.format(moment); Date configuredTime = ConfigureTime(incomingTime); milisFormat.format(configuredTime); long leftTime =configuredTime.getTime()-moment.getTime(); Date result = new Date(leftTime); result = ConfigureTime(result); Log.d("Result",result.toString()); return result; }

La función ConfigureTime() para configurar los detalles de la fecha

 public Date ConfigureTime(Date date){ Calendar today = Calendar.getInstance(); int date = today.get(Calendar.DATE); int year = today.get(Calendar.YEAR); int day = today.get(Calendar.DAY_OF_WEEK); int month = today.get(Calendar.MONTH); int zone = today.get(Calendar.ZONE_OFFSET); Calendar time = Calendar.getInstance(); time.setTime(date); time.set(Calendar.YEAR, year); time.set(Calendar.MONTH, month); time.set(Calendar.DAY_OF_WEEK, day); time.set(Calendar.DATE, date); time.set(Calendar.ZONE_OFFSET,zone); Log.d("ConfigureTime()",time.getTime().toString()); Log.d("Current Time",today.getTime().toString()); return time.getTime(); }

Miré una publicación similar sobre este problema. Verifiqué y configuré todas mis especificaciones de tiempo, como zona horaria, fecha, año, pero sigo obteniendo un resultado incorrecto. No entiendo por qué está sucediendo. Tal vez mi código lo está haciendo de manera incorrecta. no sé ¿Qué hago mal? La mayoría de las personas recomiendan usar joda time, pero me llevé un poco demasiado lejos para cambiar joda time. ¿Hay alguna solución antes de cambiar a joda time?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

tl; dr

 Duration .between( Instant.now() , myJavaUtilDate.toInstant() ) .toMillis()

java.tiempo

Está utilizando clases terribles que fueron reemplazadas hace años por las clases java.time modernas definidas en JSR 310. Nunca use Calendar , Date , SimpleDateFormat .

Instant

Si le entregaron un objeto java.util.Date , conviértalo inmediatamente en un objeto Instant . Use nuevos métodos de conversión agregados a las clases antiguas.

 Instant then = myJavaUtilDate.toInstant() ;

Un Instant representa un momento tal como se ve "en UTC", con un desplazamiento de cero horas-minutos-segundos.

Capture el momento actual como se ve en UTC.

 Instant now = Instant.now() ;

Calcular tiempo a transcurrir.

 Duration d = Duration.between( now , then ) ;

Verifique que su momento objetivo esté realmente en el futuro.

 if( d.isNegative() ) { … deal with faulty input … }

En general, es mejor pasar un objeto Duration en lugar de un mero número entero que cuenta milisegundos o nanosegundos. Pero si es necesario, puede extraer un recuento del objeto Duration .

 long milliseconds = d.toMillis() ;

Tenga en cuenta que, al trabajar en UTC, no necesitamos lidiar con ningún problema de zona horaria.

Androide

Si usa Android 26+, esta funcionalidad está integrada. Para versiones anteriores de Android, las herramientas más recientes brindan la mayor parte de esta funcionalidad a través de la "eliminación de azúcar de API".

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!