diff --git a/spec/abstractops.html b/spec/abstractops.html index 2b66bf7cfc..e7d5c183ce 100644 --- a/spec/abstractops.html +++ b/spec/abstractops.html @@ -977,9 +977,6 @@

ISO 8601 grammar

ASCIISign U+2212 - UnpaddedHour : - Hour[~Padded] - Hour[Padded] : [~Padded] DecimalDigit [+Padded] `0` DecimalDigit @@ -1144,8 +1141,7 @@

ISO 8601 grammar

TimeZoneIANAName : TimeZoneIANANameTail[~Legacy] - TimeZoneIANANameTail[+Legacy] [> but only if `etc/gmt` |ASCIISign| |UnpaddedHour| matches the ASCII-lowercase of the sequence of code points matched by (|TimeZoneIANANameTail|)] - TimeZoneIANANameTail[+Legacy] [> but only if the sequence of code points matched by |TimeZoneIANANameTail| is an ASCII-case-insensitive match for an element of « *"Etc/GMT0"*, *"GMT0"*, *"GMT-0"*, *"GMT+0"*, *"EST5EDT"*, *"CST6CDT"*, *"MST7MDT"*, *"PST8PDT"* »] + TimeZoneIANANameTail[+Legacy] [> but only if IsLegacyIANATimeZoneName of |TimeZoneIANANameTail| is *true*] TimeZoneIdentifier : TimeZoneIANAName @@ -1309,8 +1305,8 @@

ISO 8601 grammar

DateTime TimeZoneAnnotation Annotations? - -

Early errors

+ +

Static Semantics: Early Errors

DateYear : Sign DecimalDigit DecimalDigit DecimalDigit DecimalDigit DecimalDigit DecimalDigit @@ -1321,6 +1317,31 @@

Early errors

+ + +

Static Semantics: IsLegacyIANATimeZoneName ( ): a Boolean

+
+
+ +

The IANA Time Zone Database naming guidelines do not allow digits in new named time zone identifiers, but legacy exceptions remain as described at Theory and pragmatics of the tz code and data. In addition to specific names mentioned there, this specification also recognizes all time zone identifiers consisting of *"Etc/GMT-"* or *"Etc/GMT+"* followed by an unpadded count of hours less than 24 as syntactically valid, even those that are not currently included in the IANA Time Zone Database (but does not require any such identifier to be an available named time zone identifier).

+
+ + TimeZoneIANANameTail[Legacy] : + TimeZoneIANANameComponent[?Legacy] + TimeZoneIANANameComponent[?Legacy] `/` TimeZoneIANANameTail[?Legacy] + + + 1. Let _name_ be the source text matched by |TimeZoneIANANameTail|. + 1. Let _nameStr_ be CodePointsToString(_name_). + 1. For each String _legacyName_ of « *"Etc/GMT0"*, *"GMT0"*, *"GMT-0"*, *"GMT+0"*, *"EST5EDT"*, *"CST6CDT"*, *"MST7MDT"*, *"PST8PDT"* », do + 1. If _nameStr_ is an ASCII-case-insensitive match for _legacyName_, return *true*. + 1. If the length of _nameStr_ < 9, return *false*. + 1. If the substring of _nameStr_ from 0 to 8 is not an ASCII-case-insensitive match for *"Etc/GMT-"* or *"Etc/GMT+"*, return *false*. + 1. Let _hour_ be the substring of _nameStr_ from 8. + 1. If ParseText(_hour_, |Hour[~Padded]|) is a List of errors, return *false*. + 1. Return *true*. + +