Перейти к основному содержимому

Интерпретация ввода даты/времени

примечание

Эта страница переведена при помощи нейросети GigaChat.

Строки ввода даты и времени декодируются с использованием процедуры:

  1. Разделите входную строку на токены и классифицируйте каждый токен как строку, время, временную зону или число.

    1. Если числовой токен содержит двоеточие (:), это временная строка. Включите все последующие цифры и двоеточия.
    2. Если числовой токен содержит тире (-), косую черту (/) или две или более точек (.), это строка даты, которая может содержать текстовый месяц. Если уже был замечен токен даты, он вместо этого интерпретируется как имя часового пояса (например, America/New_York).
    3. Если токен является чисто числовым, то это либо одно поле, либо объединенная дата ISO 8601 (например, 19990113 для 13 января 1999 года) или время (например, 141516 для 14:15:16).
    4. Если токен начинается с плюса (+) или минуса (-), то это либо числовая временная зона, либо специальное поле.
  2. Если токен представляет собой алфавитную строку, сопоставьте ее с возможными строками:

    1. Проверьте, соответствует ли токен какой-либо известной аббревиатуре часового пояса. Эти сокращения предоставляются файлом конфигурации, описанным в разделе «Файлы конфигурации даты/времени».
    2. Если не найдено, выполните поиск во внутренней таблице для сопоставления токена либо со специальной строкой (например, today), днем (например, Thursday), месяцем (например, January), либо словом-шумом (например, at, on).
    3. Если все еще не найдено, выбросить ошибку.
  3. Когда токен является числом или числовым полем:

    1. Если есть восемь или шесть цифр и если другие поля даты ранее не были прочитаны, то интерпретируйте это как «конкатенированную дату» (например, 19990118 или 990118). Интерпретация - YYYYMMDD или YYMMDD.
    2. Если токен состоит из трех цифр и год уже был прочитан, тогда интерпретировать его как день года.
    3. Если уже прочитаны четыре или шесть цифр и год, то интерпретируйте их как время (HHMM или HHMMSS).
    4. Если найдено три цифры или более и еще не найдены поля даты, интерпретируйте это как год (это заставляет оставшиеся поля даты следовать порядку гггг-мм-дд).
    5. В противном случае предполагается, что порядок полей даты соответствует настройке DateStyle: мм-дд-гггг, дд-мм-гггг или гггг-мм-дд. Генерируйте ошибку, если поле месяца или дня выходит за пределы допустимого диапазона.
  4. Если указано до н.э., измените знак года на противоположный и добавьте единицу для внутреннего хранения. (В григорианском календаре нет нулевого года, поэтому численно 1 год до нашей эры становится нулевым годом).

  5. Если год до н. э. не был указан и если поле года состоит из двух цифр, то скорректируйте год до четырех цифр. Если значение поля меньше 70, то добавьте 2000, иначе добавьте 1900.

    Совет

    Григорианские годы нашей эры 1-99 могут быть введены с использованием четырех цифр с ведущими нулями (например, 0099 является 99 годом н.э.).