diff --git a/spec.html b/spec.html
index 7b2eba5..fe91169 100644
--- a/spec.html
+++ b/spec.html
@@ -105,27 +105,9 @@
- DateTimeStylePattern ( _dateStyle_, _timeStyle_, _dataLocaleData_, _hourCycle_ )
- The DateTimeStylePattern abstract operation accepts arguments _dateStyle_ and _timeStyle_, which are each either *undefined*, `"full"`, `"long"`, `"medium"`, or `"short"`, at least one of which is not *undefined*, _dataLocaleData_, which is a record from %DateTimeFormat%.[[LocaleData]][_locale_] for some locale _locale_, and _hourCycle_, which is either `"h11"`, `"h12"`, `"h23"`, or `"h24"`. It returns the appropriate pattern for date time formatting based on the parameters.
+
+ DateTimeStyleFormat ( _dateStyle_, _timeStyle_, _dataLocaleData_ )
+ The DateTimeStyleFormat abstract operation accepts arguments _dateStyle_ and _timeStyle_, which are each either *undefined*, `"full"`, `"long"`, `"medium"`, or `"short"`, at least one of which is not *undefined*, and _dataLocaleData_, which is a record from %DateTimeFormat%.[[LocaleData]][_locale_] for some locale _locale_. It returns the appropriate format record for date time formatting based on the parameters.
1. If _timeStyle_ is not *undefined*, then
1. Assert: _timeStyle_ is one of `"full"`, `"long"`, `"medium"`, or `"short"`.
- 1. Let _timeFormats_ be _dataLocaleData_.[[TimeFormat]].[[<_timeStyle_>]].
- 1. If _hourCycle_ is `"h11"` or `"h12"`, then
- 1. Let _timeFormat_ be _timeFormats_.[[pattern12]].
- 1. Else,
- 1. Let _timeFormat_ be _timeFormats_.[[pattern]].
+ 1. Let _timeFormat_ be _dataLocaleData_.[[TimeFormat]].[[<_timeStyle_>]].
1. If _dateStyle_ is not *undefined*, then
1. Assert: _dateStyle_ is one of `"full"`, `"long"`, `"medium"`, or `"short"`.
1. Let _dateFormat_ be _dataLocaleData_.[[DateFormat]].[[<_dateStyle_>]].
1. If _dateStyle_ is not *undefined* and _timeStyle_ is not *undefined*, then
+ 1. Let _format_ be a new Record.
+ 1. Add to _format_ all fields from _dateFormat_ except [[pattern]].
+ 1. Add to _format_ all fields from _timeFormat_ except [[pattern]] and [[pattern12]], if present.
1. Let _connector_ be _dataLocaleData_.[[DateTimeFormat]].[[<_dateStyle_>]].
- 1. Return the string _connector_ with the substring `"{0}"` replaced with _timeFormat_ and the substring `"{1}"` replaced with _dateFormat_.
+ 1. Let _pattern_ be the string _connector_ with the substring `"{0}"` replaced with _timeFormat_.[[pattern]] and the substring `"{1}"` replaced with _dateFormat_.[[pattern]].
+ 1. Set _format_.[[pattern]] to _pattern_.
+ 1. If _timeFormat_ has a [[pattern12]] field, then
+ 1. Let _pattern12_ be the string _connector_ with the substring `"{0}"` replaced with _timeFormat_.[[pattern12]] and the substring `"{1}"` replaced with _dateFormat_.[[pattern]].
+ 1. Set _format_.[[pattern12]] to _pattern12_.
+ 1. Return _format_.
1. If _timeStyle_ is not *undefined*, then
1. Return _timeFormat_.
1. Assert: _dateStyle_ is not *undefined*.
@@ -340,7 +324,7 @@ Internal slots
- [[LocaleData]][locale] must contain [[DateFormat]], [[TimeFormat]] and [[DateTimeFormat]] fields, the value of these fields are Records, where each of which has [[full]], [[long]], [[medium]] and [[short]] fields. These fields have string pattern values for [[DateFormat]] and [[DateTimeFormat]]; for [[TimeFormat]], they are records with [[pattern]] and [[pattern12]] fields, which are string patterns. For [[DateTimeFormat]], the field values must contain the strings `"{0}"` and `"{1}"`.
+ [[LocaleData]][locale] must contain [[DateFormat]], [[TimeFormat]] and [[DateTimeFormat]] fields, the value of these fields are Records, where each of which has [[full]], [[long]], [[medium]] and [[short]] fields. For [[DateFormat]] and [[TimeFormat]], the value of these fields must be a record, which has a subset of the fields shown in Table 1, where each field must have one of the values specified for the field in Table 1. Each of the records must also have a pattern field, whose value is a String value that contains for each of the date and time format component fields of the record a substring starting with `"{"`, followed by the name of the field, followed by `"}"`. If the record has an hour field, it must also have a pattern12 field, whose value is a String value that, in addition to the substrings of the pattern field, contains a substring `"{ampm}"`. For [[DateTimeFormat]], the field value must be a string pattern which contains the strings `"{0}"` and `"{1}"`.
@@ -379,6 +363,9 @@ Intl.DateTimeFormat.prototype.resolvedOptions ()
1. Else, let _v_ be *undefined*.
1. Else,
1. Let _v_ be the value of _dtf_'s internal slot whose name is the Internal Slot value of the current row.
+ 1. If the Internal Slot value of the current row is an Internal Slot value in , then
+ 1. If _dtf_.[[DateStyle]] is not *undefined* or _dtf_.[[TimeStyle]] is not *undefined*, then
+ 1. Let _v_ be *undefined*.
1. If _v_ is not *undefined*, then
1. Perform ! CreateDataPropertyOrThrow(_options_, _p_, _v_).
1. Return _options_.
@@ -500,7 +487,7 @@ Properties of Intl.DateTimeFormat Instances
[[NumberingSystem]] is a String value with the `"type"` given in Unicode Technical Standard 35 for the numbering system used for formatting.
[[TimeZone]] is a String value with the IANA time zone name of the time zone used for formatting.
[[Weekday]], [[Era]], [[Year]], [[Month]], [[Day]], [[Hour]], [[Minute]], [[Second]], [[TimeZoneName]] are each either *undefined*, indicating that the component is not used for formatting, or one of the String values given in , indicating how the component should be presented in the formatted output.
- [[HourCycle]] is a String value indicating whether the 12-hour format (`"h11"`, `"h12"`) or the 24-hour format (`"h23"`, `"h24"`) should be used. `"h11"` and `"h23"` start with hour 0 and go up to 11 and 23 respectively. `"h12"` and `"h24"` start with hour 1 and go up to 12 and 24. [[HourCycle]] is only used when [[Hour]] is not *undefined*[[Pattern]] includes an hour component.
+ [[HourCycle]] is a String value indicating whether the 12-hour format (`"h11"`, `"h12"`) or the 24-hour format (`"h23"`, `"h24"`) should be used. `"h11"` and `"h23"` start with hour 0 and go up to 11 and 23 respectively. `"h12"` and `"h24"` start with hour 1 and go up to 12 and 24. [[HourCycle]] is only used when [[Hour]] is not *undefined*.
[[DateStyle]], [[TimeStyle]] are each either *undefined*, or a String value with values `"full"`, `"long"`, `"medium"`, or `"short"`.
[[Pattern]] is a String value as described in .