BT

Início Notícias Java 9: formatação de data e hora mais parecidos com o padrão de localidades do Unicode

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

Favoritos

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.

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

Comentários da comunidade

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

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

BT

Seu cadastro no InfoQ está atualizado? Poderia rever suas informações?

Nota: se você alterar seu email, receberá uma mensagem de confirmação

Nome da empresa:
Cargo/papel na empresa:
Tamanho da empresa:
País:
Estado:
Você vai receber um email para validação do novo endereço. Esta janela pop-up fechará em instantes.