Exibir data e hora como fazer certo
Nós nos deparamos com eles datas e horas ... bem, todos os dias. Quando se trata da Web, você pode identificá-los em seus aplicativos móveis, em e-mails, em seus aplicativos de mensagens e em muitos outros lugares. No entanto, apesar de ver a data e a hora todos os dias e em todos os lugares, ainda temos que adotar um formato universal para isso.
Por exemplo, se eu escrever 10/05/2015, você nunca pode ter certeza se esse "10" é o mês ou a data, a menos que eu lhe diga de onde eu sou. Às vezes o formato muda, outras vezes o idioma.
É importante que, como desenvolvedores web, prestemos atenção à data e hora em que lidamos em nossos projetos, para que possamos atendê-los a diferentes habitantes geográficos sem qualquer conflito. Neste post estaremos discutindo o que evitar e o que abraçar quando se trata de exibir data-hora.
Globalização
Digamos que não queremos converter e exibir diferentes formatos de data e hora para diferentes espectadores em todo o mundo. O que podemos fazer? Escolhemos um formato global e seguimos com ele. Aqui é onde alguns padrões entram em jogo. Antes de chegarmos a isso, devo informar que o W3C recomenda que usemos o formato de data ISO 8601 com fuso horário UTC.
ISO 8601
A ISO 8601 descreve uma forma internacionalmente aceita de representar datas e horas usando números.
E o formato para data completa é; AAAA-MM-DD
, por exemplo: 2015-07-28
AAAA = ano com 4 dígitos
MM = mês de 2 dígitos (01 = janeiro, etc.)
DD = dia de 2 dígitos (01 a 31)
Para data e hora completas;AAAA-MM-DDThh: mm: ss.s
, por exemplo: 2015-07-28T21: 15: 18: 45
T = Para separar data e hora de acordo com a ISO 8601
mm = minuto de 2 dígitos (00 a 59)
ss = segundo de 2 dígitos (00 a 59)
s = fração decimal de um segundo, 1 ou mais dígitos
Observe que, como nenhum fuso horário foi mencionado no exemplo acima, deve-se presumir que a hora esteja no fuso horário local. Se você decidiu usar o fuso horário UTC, basta adicionar Z ao valor para denotar UTC
Por exemplo: 2015-07-28T21: 15: 18.45Z
Mas se você deseja exibir a hora local, então você pode adicionar um deslocamento de fuso horário para UTC para o valor nos formatos +hh: mm
ou -hh: mm
como necessário.
Por exemplo: vamos supor 2015-07-28T21: 15: 18: 45
está no fuso horário EST (Eastern Standard Time), que fica 5 horas atrás do fuso horário UTC.
Para representá-lo com offset UTC escrevemos 2015-07-28T21: 15: 18h45-05: 00
que é equivalente a hora UTC 2015-07-29T02: 15: 18.45Z
.
Novamente Z é anexado para representar que a data-hora exibida é em hora UTC.
UTC vs. GMT
Ambos são iguais, mas diferentes. Até agora você provavelmente já encontrou o GMT pelo menos uma vez; durante a configuração da data e hora no seu celular ou computador. É o fuso horário mais popular em todo o mundo, já que existe há mais tempo que a UTC.
Enquanto alguns podem dizer que ambos são os mesmos, mas não são, a UTC é um sucessor do GMT e é mantida pela União Internacional de Telecomunicações. É aconselhável consultar a hora com base no UTC e não no GMT.
Use o nome dos meses
O padrão ISO usava apenas números na representação da data para evitar conflitos de idioma. Mas, se o conteúdo do seu aplicativo da Web for em inglês, você deve considerar escrever meses em inglês em vez de em números..
Ao invés de 2015-07-28
, 28 de julho de 2015
é mais fácil de entender por muitos e menos confuso.
Localização
Há momentos em que queremos ser muito específicos com nossos serviços e gostaríamos de representar a data e a hora em fusos horários e idiomas locais. Existem muitas bibliotecas e APIs disponíveis para desenvolvedores da web usarem e exibirem as datas e horas conforme a região de acesso.
Você pode obter o idioma padrão do navegador interpretando o Aceitar Idioma
cabeçalho de pedido ou através do navigator.language ou navigator.browserLanguage
Objeto JavaScript, mas o melhor método é permitir que o usuário escolha uma localidade em seu aplicativo desde os primeiros caminhos não são muito confiáveis.
Depois de ter a localidade, você pode formatar a hora da data de acordo com ela, por exemplo, usando o API de internacionalização, você pode formatar uma data usando toLocaleDateString
em JavaScript, por exemplo, myDate.toLocaleDateString ('ko-KR')
retornará uma data formatada no formato usado na Coréia por nativos de língua coreana.
Horário de verão (DST)
Em alguns países, o horário de verão é feito com o envio dos relógios por uma hora no verão para aproveitar a luz solar extra disponível. Esteja ciente do horário de verão para acompanhar os horários locais em seus serviços.
Nenhum ano de dois dígitos
Ao personalizar a data e a hora da localização, não use o formato de dois dígitos para o ano em nenhum momento. Nós já estamos no século 21. Usando anos como 64
, 99
etc. será problemático no futuro. Se você já tem um sistema de ano de dois dígitos, considere alterá-lo.
Ano bissexto e outros calendários
Vamos terminar este post com algumas coisas diversas para lembrar ao lidar com datas. Se você não estiver usando nenhuma biblioteca ou API para datas e quiser lidar com elas por conta própria não recomendado, no entanto), não se esqueça de mostrar o 29 de fevereiro na entrada para os anos bissextos.
Além disso, vale a pena notar que o Calendário gregoriano não é a única forma de calendário disponível e usado No mundo todo. Existem poucos calendários regionais que os locais seguem, especialmente quando se trata de festividades.
Referências
- União Internacional de Telecomunicações: estudo do Tempo Universal Coordenado (UTC) no ITU-R
- ISO: ISO 8601 - formato de data e hora
- Wikipedia: Tempo Universal Coordenado
- Wikipedia: Horário de Verão
- Wikipedia: Horário de Greenwich
- Nota do W3C: Formatos de data e hora
- Dicas do W3C: Use o formato de data internacional (ISO)