B.1. Interpretação da entrada de data e hora #

As cadeias de caracteres de entrada de data e hora são decodificadas usando o seguinte procedimento:

  1. Divisão da cadeia de caracteres da entrada em tokens (elementos), e categorização de cada token como cadeia de caracteres de hora, zona horária ou número.

    1. Se o token numérico contiver dois pontos (:), esta é uma cadeia de caracteres de hora. Incluir todos os dígitos e dois pontos subsequentes.

    2. Se o token numérico contiver hífen (-), barra (/), ou dois ou mais pontos (.), esta é uma cadeia de caracteres de data, que pode ter um mês textual. Se o token de data já tiver sido lido, então será interpretado como sendo nome de zona horária (por exemplo, America/New_York).

    3. Se o token for apenas numérico, será um campo único, ou uma data concatenada no formato ISO 8601 (por exemplo, 19990113 para 13 de janeiro de 1999), ou hora (por exemplo, 141516 para 14:15:16).

    4. Se o token começar com o sinal de mais (+), ou de menos (-), então é uma zona horária numérica, ou um campo especial.

  2. Se o token for uma cadeia de caracteres alfabética, corresponda com as cadeias de caracteres possíveis:

    1. Veja se o token corresponde a qualquer abreviatura de zona horária conhecida. Estas abreviaturas são determinadas pelas configurações descritas em Arquivos de configuração de data e hora.

    2. Se não for encontrado, procure na tabela interna para verificar se o token é uma cadeia de caracteres especial (por exemplo, today), um dia (por exemplo, Thursday), um mês (por exemplo, January), ou uma palavra ruído (por exemplo, at, ou on).

    3. Se ainda assim não for encontrado, lance um erro.

  3. Quando o token é um número, ou um campo numérico:

    1. Havendo oito ou seis dígitos, e nenhum outro campo de data tiver sido lido anteriormente, interprete como sendo uma data concatenada (por exemplo, 19990118 ou 990118). A interpretação é YYYYMMDD ou YYMMDD.

    2. Se o token tiver três dígitos, e o ano já tiver sido lido, interprete como o dia do ano.

    3. Se quatro ou seis dígitos e o ano já foram lidos, então interprete como sendo uma hora (HHMM ou HHMMSS).

    4. Se três ou mais dígitos e nenhum campo de data ainda tiver sido lido, interprete como sendo um ano (isto força a ordem yy-mm-dd dos campos de data restantes).

    5. Caso contrário, presume-se que a ordem do campo de data siga a definição de DateStyle: mm-dd-yy, dd-mm-yy, ou yy-mm-dd. Lance um erro se o campo de mês ou dia estiver fora do intervalo permitido.

  4. Se foi especificado BC, negue o ano e adicione um para armazenamento interno. (Não há ano zero no calendário gregoriano, então numericamente 1 aC se torna o ano zero.)

  5. Se não foi especificado BC, e se o campo do ano tiver dois dígitos, ajuste o ano para quatro dígitos. Se o campo for menor que 70, adicione 2000, caso contrário, adicione 1900.

    Dica

    Os anos gregorianos 1–99 AD podem ser inseridos usando 4 dígitos com zeros à esquerda (por exemplo, 0099 é AD 99).