Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

230
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda