parse Iso(text: string) - > Result<Date, string>- 수신자
- 해당 없음
- 최소 인자 수
- 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.
관련 규칙 · Exchange dates in one fixed ISO form →결과
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
링크Exchange dates in one fixed ISO form
링크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
링크import std.date { Date }import std.testimport std.iofor text in (["0001-01-01", "1582-10-10", "2000-02-29", "9999-12-31"]) {let date = test.assertOk(Date.parseIso(text))io.writeLine(date.toIso())}let leap = test.assertOk(Date.parseIso("2000-02-29"))io.writeLine("{leap.year()} {leap.month()} {leap.day()}")
0001-01-01
1582-10-10
2000-02-29
9999-12-31
2000 2 29
기대 결과
기대 결과
실행을 마칩니다. 종료 코드 0.
0001-01-011582-10-102000-02-299999-12-312000 2 29
Reject alternate spellings and invalid calendar dates
링크import std.date { Date }import std.iofor 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"]) {match (Date.parseIso(text)) {case Err(_) => io.writeLine("rejected")case Ok(_) => io.writeLine("accepted")}}
rejected
rejected
rejected
rejected
rejected
rejected
rejected
rejected
rejected
rejected
rejected
rejected
기대 결과
기대 결과
실행을 마칩니다. 종료 코드 0.
rejectedrejectedrejectedrejectedrejectedrejectedrejectedrejectedrejectedrejectedrejectedrejected
Reject year zero in ISO text
링크import std.date { Date }import std.iomatch (Date.parseIso("0000-01-01")) {case Err(_) => io.writeLine("year zero rejected")case Ok(_) => io.writeLine("accepted")}
year zero rejected
기대 결과
기대 결과
실행을 마칩니다. 종료 코드 0.
year zero rejected