Перейти к содержимому
Топаз6.0 · До релиза
Загрузка →

Поиск в документации

Спецификация 6.0

Выберите результат стрелками и нажмите Enter, чтобы открыть его.

Введите имя API, номер диагностики, правило или тему проекта.

    Библиотека · std.date

    Date.parseIso

    Parse a valid civil date from exact YYYY-MM-DD text.

    parseIso(text: string) -> Result<Date, string>
    Модуль
    std.date →
    Получатель
    Неприменимо
    Минимальное число аргументов
    1
    Максимальное число аргументов
    1

    Declaration and parameters

    Ссылка

    Доступность

    Включено по умолчанию · Не определено

    Import std.date in language mode 5.21.

    The current compiler selects std/date.tpz for this language mode. Availability in other released editions and inclusion in each installed distribution are Pending.

    Получатель

    Ограничения параметров

    Date.parseIso accepts exactly ten ASCII characters in the form YYYY-MM-DD. The year has four digits and the month and day each have two digits. Hyphens occur after the year and month.

    The components must form a valid Gregorian date in the same range as Date.fromYmd. Valid text returns Ok containing that date. Invalid grammar or an invalid calendar date returns Err containing a descriptive nonempty string.

    Parsing does not trim whitespace or normalize another spelling. Signs, omitted zero padding, alternate separators, non ASCII digits, timestamps, time zones, and extra characters are rejected.

    Date.toIso returns exactly the same ten character form using ASCII digits and zero padding. It has no locale or time zone parameter and leaves the receiver unchanged.

    Parsing the formatted text recovers the original date. Formatting accepted input returns that same text. Date.fromYmd and Date.parseIso establish the same component and range invariants.

    The receiver or argument is evaluated once before the operation. These operations do not change the input or perform external effects. Error strings have no stable machine readable format.

    Результат

    The declared result type is Result<Date, string>.

    Эффекты

    Ошибки

    Result and effects

    Ссылка

    Fixed width ASCII text and the shared Gregorian range are required. Malformed text or an invalid date returns Err.

    Resolved contracts

    Ссылка

    Related entries

    Ссылка

    std.date →

    Exchange dates in one fixed ISO form

    Ссылка
    Правилоtopaz.stdlib.contract.date-iso.rule

    Exchange dates in one fixed ISO form

    Date.parseIso accepts exactly ten ASCII characters in the form YYYY-MM-DD. The year has four digits and the month and day each have two digits. Hyphens occur after the year and month.

    The components must form a valid Gregorian date in the same range as Date.fromYmd. Valid text returns Ok containing that date. Invalid grammar or an invalid calendar date returns Err containing a descriptive nonempty string.

    Parsing does not trim whitespace or normalize another spelling. Signs, omitted zero padding, alternate separators, non ASCII digits, timestamps, time zones, and extra characters are rejected.

    Date.toIso returns exactly the same ten character form using ASCII digits and zero padding. It has no locale or time zone parameter and leaves the receiver unchanged.

    Parsing the formatted text recovers the original date. Formatting accepted input returns that same text. Date.fromYmd and Date.parseIso establish the same component and range invariants.

    The receiver or argument is evaluated once before the operation. These operations do not change the input or perform external effects. Error strings have no stable machine readable format.

    Причина

    One fixed calendar format makes date text predictable to store, compare lexically, and exchange. Sharing validation with component construction prevents two constructors from assigning different meanings to the same date.

    Parse canonical date text and preserve its components

    Ссылка
    main.tpzParse canonical date text and preserve its componentsОткрыть песочницу →
    1. import std.date { Date }
    2. import std.test
    3. import std.io
    4. for text in (["0001-01-01", "1582-10-10", "2000-02-29", "9999-12-31"]) {
    5. let date = test.assertOk(Date.parseIso(text))
    6. io.writeLine(date.toIso())
    7. }
    8. let leap = test.assertOk(Date.parseIso("2000-02-29"))
    9. io.writeLine("{leap.year()} {leap.month()} {leap.day()}")
    Ожидаемый выводКод завершения 0
    0001-01-01
    1582-10-10
    2000-02-29
    9999-12-31
    2000 2 29
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. 0001-01-01
    2. 1582-10-10
    3. 2000-02-29
    4. 9999-12-31
    5. 2000 2 29

    Reject alternate spellings and invalid calendar dates

    Ссылка
    main.tpzReject alternate spellings and invalid calendar datesОткрыть песочницу →
    1. import std.date { Date }
    2. import std.io
    3. for text in (["", "2024-2-09", "2024-02-9", "2024/02/09", " 2024-02-09", "2024-02-09 ", "2024-02-09T00:00:00Z", "+2024-02-09", "2024-02-09", "2024-02-30", "1900-02-29", "10000-01-01"]) {
    4. match (Date.parseIso(text)) {
    5. case Err(_) => io.writeLine("rejected")
    6. case Ok(_) => io.writeLine("accepted")
    7. }
    8. }
    Ожидаемый выводКод завершения 0
    rejected
    rejected
    rejected
    rejected
    rejected
    rejected
    rejected
    rejected
    rejected
    rejected
    rejected
    rejected
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. rejected
    2. rejected
    3. rejected
    4. rejected
    5. rejected
    6. rejected
    7. rejected
    8. rejected
    9. rejected
    10. rejected
    11. rejected
    12. rejected

    Reject year zero in ISO text

    Ссылка
    main.tpzReject year zero in ISO textОткрыть песочницу →
    1. import std.date { Date }
    2. import std.io
    3. match (Date.parseIso("0000-01-01")) {
    4. case Err(_) => io.writeLine("year zero rejected")
    5. case Ok(_) => io.writeLine("accepted")
    6. }
    Ожидаемый выводКод завершения 0
    year zero rejected
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. year zero rejected

    Меню

    Загрузка →