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

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

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 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