B.1. Interpretación de la entrada de fecha/hora #

Las cadenas de entrada de fecha/hora se decodifican mediante el siguiente procedimiento.

  1. Divide la cadena de entrada en tokens y categoriza cada token como una cadena, hora, zona horaria o número.

    1. Si el token numérico contiene dos puntos (:), se trata de una cadena de hora. Incluye todos los dígitos y dos puntos posteriores.

    2. Si el token numérico contiene un guion (-), una barra diagonal (/) o dos o más puntos (.), se trata de una cadena de fecha que podría tener un mes en texto. Si ya se ha visto un token de fecha, se interpreta en su lugar como un nombre de zona horaria (por ejemplo, America/New_York).

    3. Si el token contiene solo números, entonces es un solo campo o una fecha concatenada ISO 8601 (por ejemplo, 19990113 para el 13 de enero de 1999) o una hora (por ejemplo, 141516 para las 14:15:16).

    4. Si el token comienza con un signo más (+) o menos (-), entonces es una zona horaria numérica o un campo especial.

  2. Si el token es una cadena alfabética, hazla coincidir con las posibles cadenas:

    1. Comprueba si el token coincide con alguna abreviatura de zona horaria conocida. Estas abreviaturas se determinan mediante los parámetros de configuración descritos en la Section B.4.

    2. Si no se encuentra, busca en una tabla interna para hacer coincidir el token como una cadena especial (por ejemplo, today), un día (por ejemplo, Thursday), un mes (por ejemplo, January) o una palabra de ruido (por ejemplo, at, on).

    3. Si aún no se encuentra, arroja un error.

  3. Cuando el token es un número o un campo numérico:

    1. Si hay ocho o seis dígitos, y si no se han leído previamente otros campos de fecha, interprétalo como una fecha concatenada (por ejemplo, 19990118 o 990118). La interpretación es YYYYMMDD o YYMMDD.

    2. Si el token es de tres dígitos y ya se ha leído un año, interprétalo como el día del año.

    3. Si es de cuatro o seis dígitos y ya se ha leído un año, interprétalo como una hora (HHMM o HHMMSS).

    4. Si tiene tres o más dígitos y aún no se han encontrado campos de fecha, interprétalo como un año (esto fuerza el ordenamiento aa-mm-dd de los campos de fecha restantes).

    5. De lo contrario, se asume que el orden de los campos de fecha sigue la configuración de DateStyle: mm-dd-yy, dd-mm-yy o yy-mm-dd. Arroja un error si se encuentra que un campo de mes o día está fuera de rango.

  4. Si se ha especificado BC (antes de Cristo), niega el año y suma uno para el almacenamiento interno. (No hay año cero en el calendario gregoriano, por lo que numéricamente 1 BC se convierte en el año cero).

  5. Si no se especificó BC, y si el campo del año tenía dos dígitos de longitud, ajusta el año a cuatro dígitos. Si el campo es menor que 70, suma 2000, de lo contrario suma 1900.

    Tip

    Los años gregorianos d.C. 1–99 se pueden ingresar usando 4 dígitos con ceros a la izquierda (por ejemplo, 0099 es el año 99 d.C.).