Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

238
Vistas
API de fecha de Java 8: la semana del año es diferente para el mismo día pero a diferente hora

Por lo que solo puedo suponer que es un problema de zona horaria, el siguiente código produce diferentes valores de semana del año para el mismo día, pero en diferentes momentos:

Tenga en cuenta que el código está escrito en Kotlin

Ejemplo

 fun main(args: Array<String>) { val middaySundayAfterEpoch = Instant.EPOCH + Duration .ZERO .plusDays(3) .plusHours(12) val almostMidnightSundayAfterEpoch = Instant.EPOCH + Duration .ZERO .plusDays(3) .plusHours(23) println(getWeekOfYear(middaySundayAfterEpoch)) println(getWeekOfYear(almostMidnightSundayAfterEpoch)) } fun getWeekOfYear(instant: Instant): Int { val calendar: Calendar = Calendar.getInstance() calendar.time = Date.from(instant) return calendar.get(Calendar.WEEK_OF_YEAR) }

Resultados

1

2

suposiciones

  • Domingo, 12:00 es en realidad domingo, 13:00 en el calendario
  • Domingo, 23:00 es en realidad lunes, 00:00 en el calendario

Pregunta

¿Cómo modifico esto para ignorar la zona horaria, de modo que ambas horas ocurran en la misma semana?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Nunca debe usar el legado java.util.Date y java.util.Calendar si puede evitarlos, siendo esta una de las muchas razones.

El objeto ZonedDateTime proporciona una forma de obtener esto:

 instant.atZone(ZoneId.of("UTC")).get(IsoFields.WEEK_OF_WEEK_BASED_YEAR)

EDITAR: una versión anterior de esta respuesta usó la hora predeterminada del sistema, así como ChronoUnit.ALIGNED_WEEK_OF_YEAR . Esto considera del 1 al 7 de enero como la "semana 1" del año, independientemente del día de la semana del 1 de enero en un año en particular. Sin embargo, se basará en la parte de fecha de ZonedDateTime .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda