BT

Java 9: formatação de data e hora mais parecidos com o padrão de localidades do Unicode

| por Abraham Marín Pérez , traduzido por Rafael Sakurai em 20 fev 2017. Tempo estimado de leitura: 2 minutos |

Diversas mudanças foram incluídas no Java 9 para que as funcionalidades de conversão e formatação de data e hora fiquem mais semelhantes ao Unicode Locale Data Markup Language (LDML). Estas mudanças foram supervisionadas por Stephen Colebourne, criador da biblioteca de data e hora JodaTime, precursor do novo componente java.time do Java 8. Respeitando o padrão Unicode, oferecerá uma melhor interoperabilidade com sistemas de outras linguagens de programação.

O LDML é uma linguagem usada pelo Unicode Common Locale Data Repository (CLDR), um projeto do consórcio Unicode para coletar e armazenar datas de diferentes partes do mundo, permitindo que os desenvolvedores adaptem da melhor forma possível os seus programas para diferentes culturas. Entre outras coisas, o LDML trata datas, horas, fuso horários, e em particular a formatação e conversão de datas. A seguir, são listados algumas funcionalidades que serão implementadas ou corrigidas no Java 9 e que deixam a java.time mais alinhada com a especificação do LDML:

  • JDK-8148947, o DateTimeFormatter padronizou a letra 'g', como especificado na LDML, indicando um "dia Juliano modificado"; isto é diferente de um dia Juliano normal no sentido de que a) depende da hora local, ao invés do GMT, e b) demarca dias a meia-noite, ao invés de ao meio-dia;
  • JDK-8155823, incluiu no padrão de data e hora o 'v' e 'vvvv': que são formatos do LDML indicados para "formatos genéricos sem localidade", tal como, "Hora do Pacífico", diferente do "formato genérico com localidade" em que é especificado a cidade, como "Hora de Los Angeles";
  • JDK-8148949, o DateTimeFormatter padronizou as letras 'A', 'n' e 'N': embora o LDML não especifica um formato para o 'n' e 'N', ele especifica o 'A', mas o comportamento atual implementado no Java não condiz com a especificação. O 'A' é usado para representar o número total de milissegundos transcorridos no dia, com tamanho variável, mas atualmente o Java trata com tamanho fixo: se "AA" for especificado como um padrão, não funcionará para converter qualquer valor maior que 99 milissegundos no dia. O 'n' e 'N' são apenas extensões no Java para o padrão que representa, respectivamente, os nanossegundos de um segundo, e nanossegundos de um dia;
  • JDK-8079628, o DateTimeFormatter contém "DD" que falha em tratar o terceiro dígito de um valor que representa os dias do ano: similar ao problema anterior, mas com o 'D' representando dias do ano. Se for especificado o padrão "DD", não será possível converter "123" como o 123º dia do ano.

Como mencionado, o alinhamento com a LDML facilitará a interoperabilidade entre sistemas, uma vez que já existem várias tecnologias que utilizam o LDML. O .NET da Microsoft usa LDML para intercâmbio geral de data, e há pacotes disponíveis para Node.js e Ruby.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT