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

374
Visualizações
Implementación de Java Date con día, mes y/o año desconocido

Algunas personas reales no saben en qué día, mes o incluso año nacieron.

Esto puede plantear un problema para los sistemas que requieren una fecha de nacimiento completa.

En los Países Bajos se tomó la decisión de codificar estas fechas de nacimiento con incógnitas . La siguiente es la fecha de nacimiento de alguien nacido en 1975, fecha exacta desconocida:

 00-00-1975

¿Cómo puedo manejar esto en Java? No estoy preguntando sobre el análisis de una cadena de "00-00-1975", sino una implementación de fecha real que admite valores desconocidos (¿quizás nulos?).

Afortunadamente, los tomadores de decisiones se dieron cuenta en 2014, y ahora las personas con una fecha de nacimiento desconocida reciben una fecha inventada. https://www.binnenlandsbestuur.nl/bestuur-en-organisatie/nieuws/niet-bestaande-geboortedatum-00-00-jj-blijft.9484714.lynkx

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

No, nada de eso. Puede implementar el suyo propio, por ejemplo

 interface Birthday { Optional<LocalDate> fullDate(); Year year(); } class UnknownBirthday implements Birthday { private final Year year; // ctor @Override public Year year() { return year; } @Override public Optional<LocalDate> fullDate() { return Optional.empty(); } } class KnownBirthday implements Birthday { private final LocalDate date; // ctor @Override public Optional<LocalDate> fullDate() { return Optional.of(date); } @Override public Year year() { return Year.of(date.getYear()); } }
over 4 years ago · Santiago Trujillo Relatório

0

Una opción es explotar la interfaz TemporalAccessor . Casi todas las clases de fecha y hora de java.time implementan esta interfaz y ciertamente aquellas clases que usaría para sus cumpleaños inciertos. Declare una variable como TemporalAccessor y puede asignarle un Year o una LocalDate o algún otro tipo.

Algunos programadores se verían tentados a usar una instanceof de mucho con una variable de este tipo, lo que puede considerarse no tan agradable. Afortunadamente para muchos propósitos tampoco es necesario. El método isSupported de TemporalAccessor se puede usar en la mayoría de las situaciones.

Para una demostración:

 // Example birthdays ordered from the best known to the completely unknown TemporalAccessor[] birthdays = { LocalDate.of(1955, Month.MARCH, 22), YearMonth.of(1978, Month.MAY), Year.of(1969), IsoEra.CE }; for (TemporalAccessor birthday : birthdays) { String yearString = birthday.isSupported(ChronoField.YEAR) ? String.valueOf(birthday.get(ChronoField.YEAR)) : "N/A"; String monthString = birthday.isSupported(ChronoField.MONTH_OF_YEAR) ? Month.from(birthday).toString() : "N/A"; String dateString = birthday.isSupported(ChronoField.DAY_OF_MONTH) ? String.valueOf(birthday.get(ChronoField.DAY_OF_MONTH)) : "N/A"; System.out.format("%-10s %4s %-9s %3s%n", birthday, yearString, monthString, dateString); }

La salida de este fragmento es:

 1955-03-22 1955 MARCH 22 1978-05 1978 MAY N/A 1969 1969 N/AN/A CE N/AN/AN/A

Para una interfaz más agradable, puede envolver TemporalAccessor en una clase casera. Su clase podría tener captadores para Year y LocalDate , por ejemplo, que podrían devolver un Optional vacío o null en los casos en que no haya suficientes datos. Puedes pensar en métodos más convenientes. Usted conoce mejor sus requisitos, por lo que dejo los detalles del diseño para usted.

over 4 years ago · Santiago Trujillo Relatório

0

La biblioteca Joda Time tiene una clase Partial que se puede usar para crear fechas con un mes/día desconocido, etc.

Parcial es una fecha y hora parcial inmutable que admite cualquier conjunto de campos de fecha y hora.

Una instancia parcial se puede utilizar para contener cualquier combinación de campos. La instancia no contiene una zona horaria, por lo que cualquier fecha y hora es local.

 Partial date = new Partial(); // prints 1975 System.out.println( date.with(year(), 1975) ); // prints 1975-03 System.out.println( date.with(monthOfYear(), 3).with(year(), 1975)); // prints 1975-03-28 System.out.println( date.with(dayOfMonth(), 28).with(monthOfYear(), 3).with(year(), 1975));
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