WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch for landing
bug-213822-20201111141254.patch (text/plain), 254.73 KB, created by
Yusuke Suzuki
on 2020-11-11 14:12:55 PST
(
hide
)
Description:
Patch for landing
Filename:
MIME Type:
Creator:
Yusuke Suzuki
Created:
2020-11-11 14:12:55 PST
Size:
254.73 KB
patch
obsolete
>Subversion Revision: 269700 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index 536c1946eee5d82687191bd702e8b85d41b2a76a..d125ad0aa164a092726fb751e9159af025d45b9a 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,47 @@ >+2020-11-11 Yusuke Suzuki <ysuzuki@apple.com> >+ >+ [JSC] Implement Intl.DateTimeFormat.formatRangeToParts >+ https://bugs.webkit.org/show_bug.cgi?id=213822 >+ <rdar://problem/69328711> >+ >+ Reviewed by Ross Kirsling. >+ >+ This patch implements Intl.DateTimeFormat.formatRangeToParts. It is already stage-4 (included in the spec). >+ The inputs are date interval, and this function generates array of parts of formatted string of date interval. >+ Currently, required ICU APIs are draft status. So, for now, we track ABI changes, and use APIs with careful version checks. >+ >+ However, currently, OpenSource macOS WebKit is built with specific ICU header (ICU 62 headers). So for now, we disable it >+ in OpenSource macOS WebKit build. But we enable it for Apple Internal SDK WebKit build. We can enable it if we include >+ multiple ICU header sets and select appropriate one against the linked ICU version. In the other platforms, they are using >+ corresponding ICU headers so that we can just enable it. >+ >+ There are two interesting implementation topics. >+ >+ 1. From ICU 67, the signature of udtitvfmt_formatToResult is changed. We need to switch the implementation with fine grained ICU version checks. >+ 2. udtitvfmt_formatToResult does not have an ability to configure gregorian calendar change date: before that date, the calendar is julian. >+ In ECMAScript spec, we need to ignore this gregorian calendar change date, and we should handle all gregorian calendar dates as is even if >+ the dates are older than gregorian calendar change date. However, since udtitvfmt_formatToResult does not offer the above ability, >+ ICU automatically switches the calendar between gregorian and julian. To fix this issue, ICU 67 introduced udtitvfmt_formatCalendarToResult, >+ which can take an explicit calendar for each input date so that we configure gregorian calendar change date. But this only exists after ICU 67. >+ In the implementations using ICU 64-66, we just use udtitvfmt_formatToResult. >+ >+ * JavaScriptCore.xcodeproj/project.pbxproj: >+ * Sources.txt: >+ * runtime/IntlDateTimeFormat.cpp: >+ (JSC::UDateIntervalFormatDeleter::operator()): >+ (JSC::IntlDateTimeFormat::formatToParts const): >+ (JSC::definitelyAfterGregorianCalendarChangeDate): >+ (JSC::formattedValueFromDateRange): >+ (JSC::IntlDateTimeFormat::formatRange): >+ (JSC::IntlDateTimeFormat::formatRangeToParts): >+ * runtime/IntlDateTimeFormat.h: >+ * runtime/IntlDateTimeFormatPrototype.cpp: >+ (JSC::IntlDateTimeFormatPrototype::create): >+ (JSC::IntlDateTimeFormatPrototype::finishCreation): >+ (JSC::JSC_DEFINE_HOST_FUNCTION): >+ * runtime/IntlDateTimeFormatPrototype.h: >+ * runtime/OptionsList.h: >+ > 2020-11-11 Yusuke Suzuki <ysuzuki@apple.com> > > [JSC] wasm fault trampoline should be C code since it is tagged as CFunctionPtr >diff --git a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >index 0498054769e922ffcae3187c55b28ac9ca52c2c0..c0eef0bc30e02cd876c9312d71ed6e0127d3e458 100644 >--- a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >+++ b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >@@ -1865,6 +1865,7 @@ > E392E6F824D25FA600B20767 /* B3BottomTupleValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E392E6F624D25FA600B20767 /* B3BottomTupleValue.cpp */; }; > E392E6F924D25FA900B20767 /* B3BottomTupleValue.h in Headers */ = {isa = PBXBuildFile; fileRef = E392E6F724D25FA600B20767 /* B3BottomTupleValue.h */; }; > E393ADD81FE702D00022D681 /* WeakMapImplInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = E393ADD71FE702CC0022D681 /* WeakMapImplInlines.h */; }; >+ E399AEC32559457F00B78485 /* IntlDateTimeFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1587D671B4DC14100D69849 /* IntlDateTimeFormat.cpp */; }; > E39BF39922A2288B00BD183E /* SymbolTableInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = E39BF39822A2288B00BD183E /* SymbolTableInlines.h */; }; > E39D45F51D39005600B3B377 /* InterpreterInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = E39D9D841D39000600667282 /* InterpreterInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; > E39D8B2E23021E2600265852 /* WasmOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = E39D8B2D23021E1E00265852 /* WasmOperations.h */; }; >@@ -11392,6 +11393,7 @@ > 5333BBDD2110F7E1007618EC /* DFGSpeculativeJIT64.cpp in Sources */, > 33B2A548226543BF005A0F79 /* FTLLowerDFGToB3.cpp in Sources */, > 5C4196622270E0000047B7CD /* InspectorBackendDispatcherCompatibility.cpp in Sources */, >+ E399AEC32559457F00B78485 /* IntlDateTimeFormat.cpp in Sources */, > E366441E254409B30001876F /* IntlListFormat.cpp in Sources */, > E38E8790254B978400F6F9E4 /* JSDateMath.cpp in Sources */, > 536B319E1F735F160037FC33 /* LowLevelInterpreter.cpp in Sources */, >diff --git a/Source/JavaScriptCore/Sources.txt b/Source/JavaScriptCore/Sources.txt >index f62d9437b0d35f12decc7f74acb77e2373a7d71a..f97fb0e958400dbc1f294dbfc2be52aaceffcc58 100644 >--- a/Source/JavaScriptCore/Sources.txt >+++ b/Source/JavaScriptCore/Sources.txt >@@ -813,14 +813,13 @@ runtime/IntlCache.cpp > runtime/IntlCollator.cpp > runtime/IntlCollatorConstructor.cpp > runtime/IntlCollatorPrototype.cpp >-runtime/IntlDateTimeFormat.cpp >+runtime/IntlDateTimeFormat.cpp @no-unify // Confine U_HIDE_DRAFT_API's effect to this file. > runtime/IntlDateTimeFormatConstructor.cpp > runtime/IntlDateTimeFormatPrototype.cpp > runtime/IntlDisplayNames.cpp > runtime/IntlDisplayNamesConstructor.cpp > runtime/IntlDisplayNamesPrototype.cpp >-// Confine U_HIDE_DRAFT_API's effect in this file. >-runtime/IntlListFormat.cpp @no-unify >+runtime/IntlListFormat.cpp @no-unify // Confine U_HIDE_DRAFT_API's effect in this file. > runtime/IntlListFormatConstructor.cpp > runtime/IntlListFormatPrototype.cpp > runtime/IntlLocale.cpp >diff --git a/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp b/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp >index 62717482a7a5ebb6b172a4f831e422c6ef5b1d1f..a32343e0810ddc3df8f36349e2854af0fa124df4 100644 >--- a/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp >+++ b/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp >@@ -34,12 +34,32 @@ > #include "ObjectConstructor.h" > #include <unicode/ucal.h> > #include <unicode/uenum.h> >+#include <wtf/Range.h> > #include <wtf/text/StringBuilder.h> > #include <wtf/unicode/icu/ICUHelpers.h> > >+#if HAVE(ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS) >+#include <unicode/uformattedvalue.h> >+#ifdef U_HIDE_DRAFT_API >+#undef U_HIDE_DRAFT_API >+#endif >+#endif // HAVE(ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS) >+#include <unicode/udateintervalformat.h> >+#if HAVE(ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS) >+#define U_HIDE_DRAFT_API 1 >+#endif // HAVE(ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS) >+ > namespace JSC { > >-static const double minECMAScriptTime = -8.64E15; >+// We do not use ICUDeleter<udtitvfmt_close> because we do not want to include udateintervalformat.h in IntlDateTimeFormat.h. >+// udateintervalformat.h needs to be included with #undef U_HIDE_DRAFT_API, and we would like to minimize this effect in IntlDateTimeFormat.cpp. >+void UDateIntervalFormatDeleter::operator()(UDateIntervalFormat* formatter) >+{ >+ if (formatter) >+ udtitvfmt_close(formatter); >+} >+ >+static constexpr double minECMAScriptTime = -8.64E15; > > const ClassInfo IntlDateTimeFormat::s_info = { "Object", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(IntlDateTimeFormat) }; > >@@ -1248,7 +1268,7 @@ static ASCIILiteral partTypeString(UDateFormatField field) > } > > // https://tc39.es/ecma402/#sec-formatdatetimetoparts >-JSValue IntlDateTimeFormat::formatToParts(JSGlobalObject* globalObject, double value) const >+JSValue IntlDateTimeFormat::formatToParts(JSGlobalObject* globalObject, double value, JSString* sourceType) const > { > ASSERT(m_dateFormat); > >@@ -1289,6 +1309,8 @@ JSValue IntlDateTimeFormat::formatToParts(JSGlobalObject* globalObject, double v > JSObject* part = constructEmptyObject(globalObject); > part->putDirect(vm, vm.propertyNames->type, literalString); > part->putDirect(vm, vm.propertyNames->value, value); >+ if (sourceType) >+ part->putDirect(vm, vm.propertyNames->source, sourceType); > parts->push(globalObject, part); > RETURN_IF_EXCEPTION(scope, { }); > } >@@ -1300,12 +1322,13 @@ JSValue IntlDateTimeFormat::formatToParts(JSGlobalObject* globalObject, double v > JSObject* part = constructEmptyObject(globalObject); > part->putDirect(vm, vm.propertyNames->type, type); > part->putDirect(vm, vm.propertyNames->value, value); >+ if (sourceType) >+ part->putDirect(vm, vm.propertyNames->source, sourceType); > parts->push(globalObject, part); > RETURN_IF_EXCEPTION(scope, { }); > } > } > >- > return parts; > } > >@@ -1357,6 +1380,71 @@ UDateIntervalFormat* IntlDateTimeFormat::createDateIntervalFormatIfNecessary(JSG > return m_dateIntervalFormat.get(); > } > >+#if HAVE(ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS) >+ >+// If a date is after Oct 15, 1582, the configuration of gregorian calendar change date in UCalendar does not affect >+// on the formatted string. To ensure that it is after Oct 15 in all timezones, we add one day to gregorian calendar >+// change date in UTC, so that this check can conservatively answer whether the date is definitely after gregorian >+// calendar change date. >+static inline bool definitelyAfterGregorianCalendarChangeDate(double millisecondsFromEpoch) >+{ >+ constexpr double gregorianCalendarReformDateInUTC = -12219292800000.0; >+ return millisecondsFromEpoch >= (gregorianCalendarReformDateInUTC + msPerDay); >+} >+ >+static std::unique_ptr<UFormattedDateInterval, ICUDeleter<udtitvfmt_closeResult>> formattedValueFromDateRange(UDateIntervalFormat& dateIntervalFormat, UDateFormat& dateFormat, double startDate, double endDate, UErrorCode& status) >+{ >+ auto result = std::unique_ptr<UFormattedDateInterval, ICUDeleter<udtitvfmt_closeResult>>(udtitvfmt_openResult(&status)); >+ if (U_FAILURE(status)) >+ return nullptr; >+ >+ // After ICU 67, udtitvfmt_formatToResult's signature is changed. >+#if U_ICU_VERSION_MAJOR_NUM >= 67 >+ // UFormattedDateInterval does not have a way to configure gregorian calendar change date while ECMAScript requires that >+ // gregorian calendar change should not have effect (we are setting ucal_setGregorianChange(cal, minECMAScriptTime, &status) explicitly). >+ // As a result, if the input date is older than gregorian calendar change date (Oct 15, 1582), the formatted string becomes >+ // julian calendar date. >+ // udtitvfmt_formatCalendarToResult API offers the way to set calendar to each date of the input, so that we can use UDateFormat's >+ // calendar which is already configured to meet ECMAScript's requirement (effectively clearing gregorian calendar change date). >+ // >+ // If we can ensure that startDate is after gregorian calendar change date, we can just use udtitvfmt_formatToResult since gregorian >+ // calendar change date does not affect on the formatted string. >+ // >+ // https://unicode-org.atlassian.net/browse/ICU-20705 >+ if (definitelyAfterGregorianCalendarChangeDate(startDate)) >+ udtitvfmt_formatToResult(&dateIntervalFormat, startDate, endDate, result.get(), &status); >+ else { >+ auto createCalendarForDate = [](const UCalendar* calendar, double date, UErrorCode& status) -> std::unique_ptr<UCalendar, ICUDeleter<ucal_close>> { >+ auto result = std::unique_ptr<UCalendar, ICUDeleter<ucal_close>>(ucal_clone(calendar, &status)); >+ if (U_FAILURE(status)) >+ return nullptr; >+ ucal_setMillis(result.get(), date, &status); >+ if (U_FAILURE(status)) >+ return nullptr; >+ return result; >+ }; >+ >+ auto calendar = udat_getCalendar(&dateFormat); >+ >+ auto startCalendar = createCalendarForDate(calendar, startDate, status); >+ if (U_FAILURE(status)) >+ return nullptr; >+ >+ auto endCalendar = createCalendarForDate(calendar, endDate, status); >+ if (U_FAILURE(status)) >+ return nullptr; >+ >+ udtitvfmt_formatCalendarToResult(&dateIntervalFormat, startCalendar.get(), endCalendar.get(), result.get(), &status); >+ } >+#else >+ UNUSED_PARAM(dateFormat); >+ udtitvfmt_formatToResult(&dateIntervalFormat, result.get(), startDate, endDate, &status); >+#endif >+ return result; >+} >+ >+#endif // HAVE(ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS) >+ > JSValue IntlDateTimeFormat::formatRange(JSGlobalObject* globalObject, double startDate, double endDate) > { > ASSERT(m_dateFormat); >@@ -1375,6 +1463,36 @@ JSValue IntlDateTimeFormat::formatRange(JSGlobalObject* globalObject, double sta > auto* dateIntervalFormat = createDateIntervalFormatIfNecessary(globalObject); > RETURN_IF_EXCEPTION(scope, { }); > >+#if HAVE(ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS) >+ // If the date is older than gregorian calendar change date, we need to explicitly pass configured UCalendar to >+ // udtitvfmt_formatCalendarToResult to generate a correct formatted string. >+ // The comment in formattedValueFromDateRange describes the details. >+ if (!definitelyAfterGregorianCalendarChangeDate(startDate)) { >+ UErrorCode status = U_ZERO_ERROR; >+ auto result = formattedValueFromDateRange(*dateIntervalFormat, *m_dateFormat, startDate, endDate, status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ >+ // UFormattedValue is owned by UFormattedDateInterval. We do not need to close it. >+ auto formattedValue = udtitvfmt_resultAsValue(result.get(), &status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ >+ int32_t formattedStringLength = 0; >+ const UChar* formattedStringPointer = ufmtval_getString(formattedValue, &formattedStringLength, &status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ >+ return jsString(vm, String(formattedStringPointer, formattedStringLength)); >+ } >+#endif >+ > Vector<UChar, 32> buffer; > auto status = callBufferProducingFunction(udtitvfmt_format, dateIntervalFormat, startDate, endDate, buffer, nullptr); > if (U_FAILURE(status)) { >@@ -1385,4 +1503,238 @@ JSValue IntlDateTimeFormat::formatRange(JSGlobalObject* globalObject, double sta > return jsString(vm, String(buffer)); > } > >+JSValue IntlDateTimeFormat::formatRangeToParts(JSGlobalObject* globalObject, double startDate, double endDate) >+{ >+ ASSERT(m_dateFormat); >+ >+ VM& vm = globalObject->vm(); >+ auto scope = DECLARE_THROW_SCOPE(vm); >+ >+#if HAVE(ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS) >+ // http://tc39.es/proposal-intl-DateTimeFormat-formatRange/#sec-partitiondatetimerangepattern >+ startDate = timeClip(startDate); >+ endDate = timeClip(endDate); >+ if (std::isnan(startDate) || std::isnan(endDate)) { >+ throwRangeError(globalObject, scope, "Passed date is out of range"_s); >+ return { }; >+ } >+ >+ auto* dateIntervalFormat = createDateIntervalFormatIfNecessary(globalObject); >+ RETURN_IF_EXCEPTION(scope, { }); >+ >+ auto dateFieldsPracticallyEqual = [](const UFormattedValue* formattedValue, UErrorCode& status) { >+ auto iterator = std::unique_ptr<UConstrainedFieldPosition, ICUDeleter<ucfpos_close>>(ucfpos_open(&status)); >+ if (U_FAILURE(status)) >+ return false; >+ >+ // We only care about UFIELD_CATEGORY_DATE_INTERVAL_SPAN category. >+ ucfpos_constrainCategory(iterator.get(), UFIELD_CATEGORY_DATE_INTERVAL_SPAN, &status); >+ if (U_FAILURE(status)) >+ return false; >+ >+ bool hasSpan = ufmtval_nextPosition(formattedValue, iterator.get(), &status); >+ if (U_FAILURE(status)) >+ return false; >+ >+ return !hasSpan; >+ }; >+ >+ UErrorCode status = U_ZERO_ERROR; >+ auto result = formattedValueFromDateRange(*dateIntervalFormat, *m_dateFormat, startDate, endDate, status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ >+ // UFormattedValue is owned by UFormattedDateInterval. We do not need to close it. >+ auto formattedValue = udtitvfmt_resultAsValue(result.get(), &status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ >+ auto sharedString = jsNontrivialString(vm, "shared"_s); >+ >+ // If the formatted parts of startDate and endDate are the same, it is possible that the resulted string does not look like range. >+ // For example, if the requested format only includes "year" and startDate and endDate are the same year, the result just contains one year. >+ // In that case, startDate and endDate are *practically-equal* (spec term), and we generate parts as we call `formatToParts(startDate)` with >+ // `source: "shared"` additional fields. >+ bool equal = dateFieldsPracticallyEqual(formattedValue, status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ >+ if (equal) >+ RELEASE_AND_RETURN(scope, formatToParts(globalObject, startDate, sharedString)); >+ >+ // ICU produces ranges for the formatted string, and we construct parts array from that. >+ // For example, startDate = Jan 3, 2019, endDate = Jan 5, 2019 with en-US locale is, >+ // >+ // Formatted string: "1/3/2019âââ1/5/2019" >+ // | | | | | | | | >+ // B C | | F G | | >+ // | +-D+ | +-H+ >+ // | | | | >+ // +--A---+ +--E---+ >+ // >+ // Ranges ICU generates: >+ // A: (0, 8) UFIELD_CATEGORY_DATE_INTERVAL_SPAN startRange >+ // B: (0, 1) UFIELD_CATEGORY_DATE month >+ // C: (2, 3) UFIELD_CATEGORY_DATE day >+ // D: (4, 8) UFIELD_CATEGORY_DATE year >+ // E: (11, 19) UFIELD_CATEGORY_DATE_INTERVAL_SPAN endRange >+ // F: (11, 12) UFIELD_CATEGORY_DATE month >+ // G: (13, 14) UFIELD_CATEGORY_DATE day >+ // H: (15, 19) UFIELD_CATEGORY_DATE year >+ // >+ // We use UFIELD_CATEGORY_DATE_INTERVAL_SPAN range to determine each part is either "startRange", "endRange", or "shared". >+ // It is gurarnteed that UFIELD_CATEGORY_DATE_INTERVAL_SPAN comes first before any other parts including that range. >+ // For example, in the above formatted string, "âââ" is "shared" part. For UFIELD_CATEGORY_DATE ranges, we generate corresponding >+ // part object with types such as "month". And non populated parts (e.g. "/") become "literal" parts. >+ // In the above case, expected parts are, >+ // >+ // { type: "month", value: "1", source: "startRange" }, >+ // { type: "literal", value: "/", source: "startRange" }, >+ // { type: "day", value: "3", source: "startRange" }, >+ // { type: "literal", value: "/", source: "startRange" }, >+ // { type: "year", value: "2019", source: "startRange" }, >+ // { type: "literal", value: " - ", source: "shared" }, >+ // { type: "month", value: "1", source: "endRange" }, >+ // { type: "literal", value: "/", source: "endRange" }, >+ // { type: "day", value: "5", source: "endRange" }, >+ // { type: "literal", value: "/", source: "endRange" }, >+ // { type: "year", value: "2019", source: "endRange" }, >+ // >+ >+ JSArray* parts = JSArray::tryCreate(vm, globalObject->arrayStructureForIndexingTypeDuringAllocation(ArrayWithContiguous), 0); >+ if (!parts) { >+ throwOutOfMemoryError(globalObject, scope); >+ return { }; >+ } >+ >+ int32_t formattedStringLength = 0; >+ const UChar* formattedStringPointer = ufmtval_getString(formattedValue, &formattedStringLength, &status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ String resultString(formattedStringPointer, formattedStringLength); >+ >+ // We care multiple categories (UFIELD_CATEGORY_DATE and UFIELD_CATEGORY_DATE_INTERVAL_SPAN). >+ // So we do not constraint iterator. >+ auto iterator = std::unique_ptr<UConstrainedFieldPosition, ICUDeleter<ucfpos_close>>(ucfpos_open(&status)); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ >+ auto startRangeString = jsNontrivialString(vm, "startRange"_s); >+ auto endRangeString = jsNontrivialString(vm, "endRange"_s); >+ auto literalString = jsNontrivialString(vm, "literal"_s); >+ >+ WTF::Range<int32_t> startRange { -1, -1 }; >+ WTF::Range<int32_t> endRange { -1, -1 }; >+ >+ auto createPart = [&] (JSString* type, int32_t beginIndex, int32_t length) { >+ auto sourceType = [&](int32_t index) -> JSString* { >+ if (startRange.contains(index)) >+ return startRangeString; >+ if (endRange.contains(index)) >+ return endRangeString; >+ return sharedString; >+ }; >+ >+ auto value = jsString(vm, resultString.substring(beginIndex, length)); >+ JSObject* part = constructEmptyObject(globalObject); >+ part->putDirect(vm, vm.propertyNames->type, type); >+ part->putDirect(vm, vm.propertyNames->value, value); >+ part->putDirect(vm, vm.propertyNames->source, sourceType(beginIndex)); >+ return part; >+ }; >+ >+ int32_t resultLength = resultString.length(); >+ int32_t previousEndIndex = 0; >+ while (true) { >+ bool next = ufmtval_nextPosition(formattedValue, iterator.get(), &status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ if (!next) >+ break; >+ >+ int32_t category = ucfpos_getCategory(iterator.get(), &status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ >+ int32_t fieldType = ucfpos_getField(iterator.get(), &status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ >+ int32_t beginIndex = 0; >+ int32_t endIndex = 0; >+ ucfpos_getIndexes(iterator.get(), &beginIndex, &endIndex, &status); >+ if (U_FAILURE(status)) { >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+ } >+ >+ dataLogLnIf(IntlDateTimeFormatInternal::verbose, category, " ", fieldType, " (", beginIndex, ", ", endIndex, ")"); >+ >+ if (category != UFIELD_CATEGORY_DATE && category != UFIELD_CATEGORY_DATE_INTERVAL_SPAN) >+ continue; >+ if (category == UFIELD_CATEGORY_DATE && fieldType < 0) >+ continue; >+ >+ if (previousEndIndex < beginIndex) { >+ JSObject* part = createPart(literalString, previousEndIndex, beginIndex - previousEndIndex); >+ parts->push(globalObject, part); >+ RETURN_IF_EXCEPTION(scope, { }); >+ previousEndIndex = beginIndex; >+ } >+ >+ if (category == UFIELD_CATEGORY_DATE_INTERVAL_SPAN) { >+ // > The special field category UFIELD_CATEGORY_DATE_INTERVAL_SPAN is used to indicate which datetime >+ // > primitives came from which arguments: 0 means fromCalendar, and 1 means toCalendar. The span category >+ // > will always occur before the corresponding fields in UFIELD_CATEGORY_DATE in the nextPosition() iterator. >+ // from ICU comment. So, field 0 is startRange, field 1 is endRange. >+ if (!fieldType) >+ startRange = WTF::Range<int32_t>(beginIndex, endIndex); >+ else { >+ ASSERT(fieldType == 1); >+ endRange = WTF::Range<int32_t>(beginIndex, endIndex); >+ } >+ continue; >+ } >+ >+ ASSERT(category == UFIELD_CATEGORY_DATE); >+ >+ auto type = jsString(vm, partTypeString(UDateFormatField(fieldType))); >+ JSObject* part = createPart(type, beginIndex, endIndex - beginIndex); >+ parts->push(globalObject, part); >+ RETURN_IF_EXCEPTION(scope, { }); >+ previousEndIndex = endIndex; >+ } >+ >+ if (previousEndIndex < resultLength) { >+ JSObject* part = createPart(literalString, previousEndIndex, resultLength - previousEndIndex); >+ parts->push(globalObject, part); >+ RETURN_IF_EXCEPTION(scope, { }); >+ } >+ >+ return parts; >+#else >+ UNUSED_PARAM(startDate); >+ UNUSED_PARAM(endDate); >+ throwTypeError(globalObject, scope, "Failed to format date interval"_s); >+ return { }; >+#endif >+} >+ >+ > } // namespace JSC >diff --git a/Source/JavaScriptCore/runtime/IntlDateTimeFormat.h b/Source/JavaScriptCore/runtime/IntlDateTimeFormat.h >index 53049120791a37ca834112b12f2f2f836b103c3e..e17a642eceee834e442e5af8224b6bde81e5da92 100644 >--- a/Source/JavaScriptCore/runtime/IntlDateTimeFormat.h >+++ b/Source/JavaScriptCore/runtime/IntlDateTimeFormat.h >@@ -27,15 +27,27 @@ > > #include "JSObject.h" > #include <unicode/udat.h> >-#include <unicode/udateintervalformat.h> > #include <wtf/unicode/icu/ICUHelpers.h> > >+struct UDateIntervalFormat; >+ >+#if !defined(HAVE_ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS) >+// ICU header is up-to-date if the build is non-Darwin or using Apple Internal SDK. >+#if (USE(APPLE_INTERNAL_SDK) || !OS(DARWIN)) && U_ICU_VERSION_MAJOR_NUM >= 64 >+#define HAVE_ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS 1 >+#endif >+#endif >+ > namespace JSC { > > enum class RelevantExtensionKey : uint8_t; > > class JSBoundFunction; > >+struct UDateIntervalFormatDeleter { >+ JS_EXPORT_PRIVATE void operator()(UDateIntervalFormat*); >+}; >+ > class IntlDateTimeFormat final : public JSNonFinalObject { > public: > using Base = JSNonFinalObject; >@@ -60,8 +72,9 @@ class IntlDateTimeFormat final : public JSNonFinalObject { > > void initializeDateTimeFormat(JSGlobalObject*, JSValue locales, JSValue options); > JSValue format(JSGlobalObject*, double value) const; >- JSValue formatToParts(JSGlobalObject*, double value) const; >+ JSValue formatToParts(JSGlobalObject*, double value, JSString* sourceType = nullptr) const; > JSValue formatRange(JSGlobalObject*, double startDate, double endDate); >+ JSValue formatRangeToParts(JSGlobalObject*, double startDate, double endDate); > JSObject* resolvedOptions(JSGlobalObject*) const; > > JSBoundFunction* boundFormat() const { return m_boundFormat.get(); } >@@ -112,7 +125,6 @@ class IntlDateTimeFormat final : public JSNonFinalObject { > static void replaceHourCycleInPattern(Vector<UChar, 32>&, HourCycle); > > using UDateFormatDeleter = ICUDeleter<udat_close>; >- using UDateIntervalFormatDeleter = ICUDeleter<udtitvfmt_close>; > > WriteBarrier<JSBoundFunction> m_boundFormat; > std::unique_ptr<UDateFormat, UDateFormatDeleter> m_dateFormat; >diff --git a/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp b/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp >index 333bfdd55da2bde5ccfed8e048a833907b8515ff..738c8c64bb2fb6b64c00eb726c8356d5b1ca5967 100644 >--- a/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp >+++ b/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp >@@ -38,6 +38,7 @@ namespace JSC { > > static JSC_DECLARE_HOST_FUNCTION(IntlDateTimeFormatPrototypeGetterFormat); > static JSC_DECLARE_HOST_FUNCTION(IntlDateTimeFormatPrototypeFuncFormatRange); >+static JSC_DECLARE_HOST_FUNCTION(IntlDateTimeFormatPrototypeFuncFormatRangeToParts); > static JSC_DECLARE_HOST_FUNCTION(IntlDateTimeFormatPrototypeFuncFormatToParts); > static JSC_DECLARE_HOST_FUNCTION(IntlDateTimeFormatPrototypeFuncResolvedOptions); > static JSC_DECLARE_HOST_FUNCTION(IntlDateTimeFormatFuncFormatDateTime); >@@ -59,10 +60,10 @@ const ClassInfo IntlDateTimeFormatPrototype::s_info = { "Intl.DateTimeFormat", & > @end > */ > >-IntlDateTimeFormatPrototype* IntlDateTimeFormatPrototype::create(VM& vm, JSGlobalObject*, Structure* structure) >+IntlDateTimeFormatPrototype* IntlDateTimeFormatPrototype::create(VM& vm, JSGlobalObject* globalObject, Structure* structure) > { > IntlDateTimeFormatPrototype* object = new (NotNull, allocateCell<IntlDateTimeFormatPrototype>(vm.heap)) IntlDateTimeFormatPrototype(vm, structure); >- object->finishCreation(vm); >+ object->finishCreation(vm, globalObject); > return object; > } > >@@ -76,10 +77,17 @@ IntlDateTimeFormatPrototype::IntlDateTimeFormatPrototype(VM& vm, Structure* stru > { > } > >-void IntlDateTimeFormatPrototype::finishCreation(VM& vm) >+void IntlDateTimeFormatPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject) > { > Base::finishCreation(vm); > ASSERT(inherits(vm, info())); >+#if HAVE(ICU_U_DATE_INTERVAL_FORMAT_FORMAT_RANGE_TO_PARTS) >+ if (Options::useIntlDateTimeFormatRangeToParts()) >+ JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION("formatRangeToParts", IntlDateTimeFormatPrototypeFuncFormatRangeToParts, static_cast<unsigned>(PropertyAttribute::DontEnum), 2); >+#else >+ UNUSED_PARAM(globalObject); >+ UNUSED_PARAM(&IntlDateTimeFormatPrototypeFuncFormatRangeToParts); >+#endif > JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); > } > >@@ -188,6 +196,33 @@ JSC_DEFINE_HOST_FUNCTION(IntlDateTimeFormatPrototypeFuncFormatRange, (JSGlobalOb > RELEASE_AND_RETURN(scope, JSValue::encode(dateTimeFormat->formatRange(globalObject, startDate, endDate))); > } > >+// http://tc39.es/proposal-intl-DateTimeFormat-formatRange/#sec-intl.datetimeformat.prototype.formatRangeToParts >+JSC_DEFINE_HOST_FUNCTION(IntlDateTimeFormatPrototypeFuncFormatRangeToParts, (JSGlobalObject* globalObject, CallFrame* callFrame)) >+{ >+ VM& vm = globalObject->vm(); >+ auto scope = DECLARE_THROW_SCOPE(vm); >+ >+ // Do not use unwrapForOldFunctions. >+ auto* dateTimeFormat = jsDynamicCast<IntlDateTimeFormat*>(vm, callFrame->thisValue()); >+ if (UNLIKELY(!dateTimeFormat)) >+ return JSValue::encode(throwTypeError(globalObject, scope, "Intl.DateTimeFormat.prototype.formatRangeToParts called on value that's not an object initialized as a DateTimeFormat"_s)); >+ >+ JSValue startDateValue = callFrame->argument(0); >+ JSValue endDateValue = callFrame->argument(1); >+ >+ if (startDateValue.isUndefined() || endDateValue.isUndefined()) >+ return throwVMTypeError(globalObject, scope, "startDate or endDate is undefined"_s); >+ >+ double startDate = startDateValue.toNumber(globalObject); >+ RETURN_IF_EXCEPTION(scope, { }); >+ double endDate = endDateValue.toNumber(globalObject); >+ RETURN_IF_EXCEPTION(scope, { }); >+ if (startDate > endDate) >+ return throwVMRangeError(globalObject, scope, "startDate is larger than endDate"_s); >+ >+ RELEASE_AND_RETURN(scope, JSValue::encode(dateTimeFormat->formatRangeToParts(globalObject, startDate, endDate))); >+} >+ > JSC_DEFINE_HOST_FUNCTION(IntlDateTimeFormatPrototypeFuncResolvedOptions, (JSGlobalObject* globalObject, CallFrame* callFrame)) > { > VM& vm = globalObject->vm(); >diff --git a/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.h b/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.h >index df12d4346a5dfb89fbca843ed12e7052a9756cfd..82f4ca29f47e703d58a02612f533494eb979a25d 100644 >--- a/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.h >+++ b/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.h >@@ -49,7 +49,7 @@ class IntlDateTimeFormatPrototype final : public JSNonFinalObject { > > private: > IntlDateTimeFormatPrototype(VM&, Structure*); >- void finishCreation(VM&); >+ void finishCreation(VM&, JSGlobalObject*); > }; > > } // namespace JSC >diff --git a/Source/JavaScriptCore/runtime/OptionsList.h b/Source/JavaScriptCore/runtime/OptionsList.h >index f84deec1c26d52cf7331904a201d8e84d5a34a5b..a103ef8c13e3263bfd853ef01637e01ba88460fc 100644 >--- a/Source/JavaScriptCore/runtime/OptionsList.h >+++ b/Source/JavaScriptCore/runtime/OptionsList.h >@@ -493,6 +493,7 @@ JS_EXPORT_PRIVATE bool canUseJITCage(); > v(Bool, useWebAssemblyMultiValues, true, Normal, "Allow types from the wasm mulit-values spec.") \ > v(Bool, useWeakRefs, true, Normal, "Expose the WeakRef constructor.") \ > v(Bool, useIntlDateTimeFormatDayPeriod, true, Normal, "Expose the Intl.DateTimeFormat dayPeriod feature.") \ >+ v(Bool, useIntlDateTimeFormatRangeToParts, true, Normal, "Expose the Intl.DateTimeFormat#formatRangeToParts feature.") \ > v(Bool, useAtMethod, false, Normal, "Expose the at() method on Array and %TypedArray%.") \ > v(Bool, useSharedArrayBuffer, false, Normal, nullptr) \ > v(Bool, useArrayAllocationProfiling, true, Normal, "If true, we will use our normal array allocation profiling. If false, the allocation profile will always claim to be undecided.") \ >diff --git a/JSTests/ChangeLog b/JSTests/ChangeLog >index e100f992da658e78e2e53d37fa2997a72b569f1a..87ef983044d7202772079c3b08a661b2c905833d 100644 >--- a/JSTests/ChangeLog >+++ b/JSTests/ChangeLog >@@ -1,3 +1,55 @@ >+2020-11-11 Yusuke Suzuki <ysuzuki@apple.com> >+ >+ [JSC] Implement Intl.DateTimeFormat.formatRangeToParts >+ https://bugs.webkit.org/show_bug.cgi?id=213822 >+ <rdar://problem/69328711> >+ >+ Reviewed by Ross Kirsling. >+ >+ * stress/intl-datetimeformat-formatrange-relevant-extensions.js: >+ * stress/intl-datetimeformat-formatrange-should-not-handle-gregorian-change-date.js: Added. >+ (shouldBe): >+ (vm.icuHeaderVersion): >+ * stress/intl-datetimeformat-formatrange.js: >+ (shouldThrow): >+ (test): >+ * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js: Added. >+ (shouldBe): >+ (compareParts): >+ (shouldThrow): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt1.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt2.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt3.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt4.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt5.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.vm.icuVersion): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt6.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt7.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt8.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt9.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt10.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt11.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt12.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt13.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt14.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt15.formatRangeToParts): >+ (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt16.formatRangeToParts): >+ * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions.js: Added. >+ (shouldBe): >+ (compareParts): >+ (shouldThrow): >+ * stress/intl-datetimeformat-formatrangetoparts-should-not-handle-gregorian-change-date.js: Added. >+ (shouldBe): >+ (compareParts): >+ (vm.icuHeaderVersion): >+ * stress/intl-datetimeformat-formatrangetoparts.js: Added. >+ (shouldBe): >+ (compareParts): >+ (shouldThrow): >+ (test): >+ * test262/config.yaml: >+ * test262/expectations.yaml: This failure is because of CLDR data inside ICU. ICU 67 will fix them. >+ > 2020-11-10 Ross Kirsling <ross.kirsling@sony.com> > > Align %TypedArray% behavior with recent spec adjustments >diff --git a/JSTests/stress/intl-datetimeformat-formatrange-relevant-extensions.js b/JSTests/stress/intl-datetimeformat-formatrange-relevant-extensions.js >index 8c6bcd1db26c14742d8faa68ebd543fd12ec42f3..403ee974a13b1babe4cda05f4ae38f8239b66a03 100644 >--- a/JSTests/stress/intl-datetimeformat-formatrange-relevant-extensions.js >+++ b/JSTests/stress/intl-datetimeformat-formatrange-relevant-extensions.js >@@ -20,7 +20,7 @@ function shouldThrow(func, errorMessage) { > > function test() { > let range = "âââ"; // This is not usual space unfortuantely in older ICU versions. >- if ($vm.icuVersion() >= 65) >+ if ($vm.icuVersion() >= 67) > range = " â "; > > let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0)); >diff --git a/JSTests/stress/intl-datetimeformat-formatrange-should-not-handle-gregorian-change-date.js b/JSTests/stress/intl-datetimeformat-formatrange-should-not-handle-gregorian-change-date.js >new file mode 100644 >index 0000000000000000000000000000000000000000..ca37d9297d19088359ef3a89fb37b6d53654c881 >--- /dev/null >+++ b/JSTests/stress/intl-datetimeformat-formatrange-should-not-handle-gregorian-change-date.js >@@ -0,0 +1,30 @@ >+// Copyright 2019 the V8 project authors. All rights reserved. >+// Copyright 2020 Apple Inc. All rights reserved. >+// Use of this source code is governed by a BSD-style license. >+ >+function shouldBe(actual, expected) { >+ if (actual !== expected) >+ throw new Error('bad value: ' + actual); >+} >+ >+if ($vm.icuHeaderVersion() >= 67) { >+ let df = new Intl.DateTimeFormat("en"); >+ // A modern date >+ let d1 = new Date(2019, 3, 4); >+ let d2 = new Date(2019, 4, 5); >+ shouldBe(df.format(d1), df.formatRange(d1, d1)); >+ shouldBe(df.format(d2), df.formatRange(d2, d2)); >+ shouldBe("4/4/2019 â 5/5/2019", df.formatRange(d1, d2)); >+ // An old date just before the Julian / Gregorian switch >+ let d3 = new Date(1582, 8, 13); >+ let d4 = new Date(1582, 9, 14); >+ shouldBe(df.format(d3), df.formatRange(d3, d3)); >+ shouldBe(df.format(d4), df.formatRange(d4, d4)); >+ shouldBe("9/13/1582 â 10/14/1582", df.formatRange(d3, d4)); >+ // An older date >+ let d5 = new Date(1000, 0, 1); >+ let d6 = new Date(1001, 1, 2); >+ shouldBe(df.format(d5), df.formatRange(d5, d5)); >+ shouldBe(df.format(d6), df.formatRange(d6, d6)); >+ shouldBe("1/1/1000 â 2/2/1001", df.formatRange(d5, d6)); >+} >diff --git a/JSTests/stress/intl-datetimeformat-formatrange.js b/JSTests/stress/intl-datetimeformat-formatrange.js >index 4f0529901d1b802c185c85b53027a7adafef60d5..e22fe435c05a85443a5a90eee6b19473e3579f95 100644 >--- a/JSTests/stress/intl-datetimeformat-formatrange.js >+++ b/JSTests/stress/intl-datetimeformat-formatrange.js >@@ -31,10 +31,13 @@ function shouldThrow(func, errorMessage) { > fmt0.formatRange(); > }, `TypeError: startDate or endDate is undefined`); > >+shouldThrow(() => { >+ fmt0.formatRange(new Date(Date.UTC(2008, 0, 20, 10, 0, 0)), new Date(Date.UTC(2007, 0, 10, 10, 0, 0))); >+}, `RangeError: startDate is larger than endDate`); > > function test() { >- let range = "âââ"; // This is not usual space unfortuantely in older ICU versions. >- if ($vm.icuVersion() >= 65) >+ let range = "âââ"; >+ if ($vm.icuVersion() >= 67) > range = " â "; > > let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0)); >@@ -52,6 +55,7 @@ function test() { > timeZone: 'America/Los_Angeles', > }); > shouldBe(fmt1.format(date1), `1/10/07, 2:00 AM`); >+ shouldBe(fmt1.formatRange(date1, date1), `1/10/07, 2:00 AM`); > shouldBe(fmt1.formatRange(date1, date2), `1/10/07, 2:00${range}3:00 AM`); > shouldBe(fmt1.formatRange(date1, date3), `1/10/07, 2:00 AM${range}1/20/07, 2:00 AM`); > } >@@ -64,6 +68,7 @@ function test() { > timeZone: 'America/Los_Angeles', > }); > shouldBe(fmt1.format(date1), `1/10/07`); >+ shouldBe(fmt1.formatRange(date1, date1), `1/10/07`); > shouldBe(fmt1.formatRange(date1, date2), `1/10/07`); > shouldBe(fmt1.formatRange(date1, date3), `1/10/07${range}1/20/07`); > } >@@ -75,6 +80,7 @@ function test() { > timeZone: 'America/Los_Angeles', > }); > shouldBe(fmt1.format(date1), `2007`); >+ shouldBe(fmt1.formatRange(date1, date1), `2007`); > shouldBe(fmt1.formatRange(date1, date2), `2007`); > shouldBe(fmt1.formatRange(date1, date4), `2007${range}2008`); > } >@@ -89,6 +95,7 @@ function test() { > timeZone: 'UTC', > }); > shouldBe(fmt1.format(date1), `1/10/07, 10:00 AM`); >+ shouldBe(fmt1.formatRange(date1, date1), `1/10/07, 10:00 AM`); > shouldBe(fmt1.formatRange(date1, date2), `1/10/07, 10:00${range}11:00 AM`); > shouldBe(fmt1.formatRange(date1, date3), `1/10/07, 10:00 AM${range}1/20/07, 10:00 AM`); > } >@@ -101,6 +108,7 @@ function test() { > timeZone: 'America/Los_Angeles', > }); > shouldBe(fmt2.format(date1), `Jan 10, 2007`); >+ shouldBe(fmt2.formatRange(date1, date1), `Jan 10, 2007`); > shouldBe(fmt2.formatRange(date1, date2), `Jan 10, 2007`); > shouldBe(fmt2.formatRange(date1, date3), `Jan 10${range}20, 2007`); > } >@@ -130,5 +138,5 @@ function test() { > } > } > >-if ($vm.icuVersion() >= 64) >+if (Intl.DateTimeFormat.formatRange) > test(); >diff --git a/JSTests/stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js b/JSTests/stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js >new file mode 100644 >index 0000000000000000000000000000000000000000..ada2e38d39ac940a4a90602b98bed7311b862524 >--- /dev/null >+++ b/JSTests/stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js >@@ -0,0 +1,1677 @@ >+function shouldBe(actual, expected) { >+ if (actual !== expected) >+ throw new Error('bad value: ' + actual + ' expected value: ' + expected); >+} >+ >+function compareParts(actual, expected) { >+ shouldBe(actual.length, expected.length); >+ for (var i = 0; i < actual.length; ++i) { >+ shouldBe(actual[i].type, expected[i].type); >+ shouldBe(actual[i].value, expected[i].value); >+ shouldBe(actual[i].source, expected[i].source); >+ } >+} >+ >+function shouldThrow(func, errorMessage) { >+ var errorThrown = false; >+ var error = null; >+ try { >+ func(); >+ } catch (e) { >+ errorThrown = true; >+ error = e; >+ } >+ if (!errorThrown) >+ throw new Error('not thrown'); >+ if (String(error) !== errorMessage) >+ throw new Error(`bad error: ${String(error)}`); >+} >+ >+let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0)); >+let date2 = new Date(Date.UTC(2007, 0, 10, 11, 0, 0)); >+let date3 = new Date(Date.UTC(2007, 0, 20, 10, 0, 0)); >+let date4 = new Date(Date.UTC(2010, 0, 20, 10, 0, 0)); >+ >+let date5 = new Date(Date.UTC(2007, 0, 10, 12, 0, 0)); >+let date6 = new Date(Date.UTC(2007, 0, 10, 14, 0, 0)); >+let date7 = new Date(Date.UTC(2007, 0, 10, 23, 0, 0)); >+let date8 = new Date(Date.UTC(2007, 0, 11, 0, 0, 0)); >+ >+if (Intl.DateTimeFormat.formatRangeToParts) { >+ // Test three relavant extensions. >+ // "nu" NumberingSystem >+ let fmt1 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ numberingSystem: 'hanidec', >+ }); >+ shouldBe(fmt1.format(date1), `ãä¸/ä¸/ä¸ã äº:ãã`); >+ compareParts(fmt1.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"ãä¸","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"ä¸","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"ä¸ã","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"äº","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"ãã","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"ä¸","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"ãã","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt1.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"ãä¸","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"ä¸","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"ä¸ã","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"hour","value":"äº","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"ãã","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"ãä¸","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"ä¸","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"äºã","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"hour","value":"äº","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"ãã","source":"endRange"}, >+ ]); >+ >+ // "ca" Calendar >+ let fmt2 = new Intl.DateTimeFormat("ja", { >+ year: 'numeric', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ calendar: 'chinese' >+ }); >+ shouldBe(fmt2.format(date1), `䏿年11æ22æ¥ 2:00`); >+ compareParts(fmt2.formatRangeToParts(date1, date2), [ >+ {"type":"yearName","value":"䏿","source":"shared"}, >+ {"type":"literal","value":"å¹´","source":"shared"}, >+ {"type":"month","value":"11","source":"shared"}, >+ {"type":"literal","value":"æ","source":"shared"}, >+ {"type":"day","value":"22","source":"shared"}, >+ {"type":"literal","value":"æ¥ ","source":"shared"}, >+ {"type":"hour","value":"2","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"3","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt2.formatRangeToParts(date1, date3), [ >+ {"type":"yearName","value":"䏿","source":"startRange"}, >+ {"type":"literal","value":"å¹´","source":"startRange"}, >+ {"type":"month","value":"11","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"day","value":"22","source":"startRange"}, >+ {"type":"literal","value":"æ¥ ","source":"startRange"}, >+ {"type":"hour","value":"2","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"yearName","value":"䏿","source":"endRange"}, >+ {"type":"literal","value":"å¹´","source":"endRange"}, >+ {"type":"month","value":"12","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"day","value":"2","source":"endRange"}, >+ {"type":"literal","value":"æ¥ ","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ >+ let fmt3 = new Intl.DateTimeFormat("ja", { >+ year: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ calendar: 'chinese' >+ }); >+ shouldBe(fmt3.format(date1), `䏿年`); >+ compareParts(fmt3.formatRangeToParts(date1, date2), [ >+ {"type":"yearName","value":"䏿","source":"shared"}, >+ {"type":"literal","value":"å¹´","source":"shared"}, >+ ]); >+ compareParts(fmt3.formatRangeToParts(date1, date3), [ >+ {"type":"yearName","value":"䏿","source":"shared"}, >+ {"type":"literal","value":"å¹´","source":"shared"}, >+ ]); >+ compareParts(fmt3.formatRangeToParts(date1, date4), [ >+ {"type":"yearName","value":"䏿","source":"startRange"}, >+ {"type":"literal","value":"å¹´ï½","source":"shared"}, >+ {"type":"yearName","value":"å·±ä¸","source":"endRange"}, >+ {"type":"literal","value":"å¹´","source":"shared"}, >+ ]); >+ >+ // Calendar-sensitive format >+ let fmt4 = new Intl.DateTimeFormat('ja-u-ca-buddhist', { >+ year: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ }); >+ shouldBe(fmt4.format(date1), `仿¦2550å¹´`); >+ compareParts(fmt4.formatRangeToParts(date1, date2), [ >+ {"type":"era","value":"仿¦","source":"shared"}, >+ {"type":"year","value":"2550","source":"shared"}, >+ {"type":"literal","value":"å¹´","source":"shared"}, >+ ]); >+ compareParts(fmt4.formatRangeToParts(date1, date3), [ >+ {"type":"era","value":"仿¦","source":"shared"}, >+ {"type":"year","value":"2550","source":"shared"}, >+ {"type":"literal","value":"å¹´","source":"shared"}, >+ ]); >+ compareParts(fmt4.formatRangeToParts(date1, date4), [ >+ {"type":"era","value":"仿¦","source":"shared"}, >+ {"type":"year","value":"2550","source":"startRange"}, >+ {"type":"literal","value":"å¹´ï½","source":"shared"}, >+ {"type":"year","value":"2553","source":"endRange"}, >+ {"type":"literal","value":"å¹´","source":"shared"}, >+ ]); >+ >+ // "hc" HourCycle >+ let fmt5 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h24', >+ }); >+ shouldBe(fmt5.format(date1), `07/1/10 10:00`); >+ shouldBe(fmt5.format(date8), `07/1/11 24:00`); >+ compareParts(fmt5.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt5.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt5.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt5.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"hour","value":"14","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt5.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"hour","value":"23","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ if ($vm.icuVersion() > 66) { >+ compareParts(fmt5.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"hour","value":"24","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ } >+ >+ let fmt6 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h23', >+ }); >+ shouldBe(fmt6.format(date1), `07/1/10 10:00`); >+ shouldBe(fmt6.format(date8), `07/1/11 0:00`); >+ compareParts(fmt6.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt6.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt6.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt6.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"14","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt6.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"23","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt6.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ >+ let fmt7 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h11', >+ }); >+ shouldBe(fmt7.format(date1), `07/1/10 åå10:00`); >+ shouldBe(fmt7.format(date8), `07/1/11 åå0:00`); >+ compareParts(fmt7.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt7.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt7.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt7.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt7.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt7.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ >+ let fmt8 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h12', >+ }); >+ shouldBe(fmt8.format(date1), `07/1/10 åå10:00`); >+ shouldBe(fmt8.format(date8), `07/1/11 åå12:00`); >+ compareParts(fmt8.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt8.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt8.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt8.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt8.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ if ($vm.icuVersion() > 66) { >+ compareParts(fmt8.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ } >+ >+ // "hc" + hour 2-digit >+ let fmt9 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h24', >+ }); >+ shouldBe(fmt9.format(date1), `07/1/10 10:00`); >+ shouldBe(fmt9.format(date8), `07/1/11 24:00`); >+ compareParts(fmt9.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt9.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt9.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt9.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"hour","value":"14","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt9.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"hour","value":"23","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ if ($vm.icuVersion() > 66) { >+ compareParts(fmt9.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"hour","value":"24","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ } >+ >+ let fmt10 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h23', >+ }); >+ shouldBe(fmt10.format(date1), `07/1/10 10:00`); >+ shouldBe(fmt10.format(date8), `07/1/11 00:00`); >+ compareParts(fmt10.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt10.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt10.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt10.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"14","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt10.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"23","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt10.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ >+ let fmt11 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h11', >+ }); >+ shouldBe(fmt11.format(date1), `07/1/10 åå10:00`); >+ shouldBe(fmt11.format(date8), `07/1/11 åå00:00`); >+ compareParts(fmt11.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt11.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt11.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt11.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt11.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt11.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ >+ let fmt12 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h12', >+ }); >+ shouldBe(fmt12.format(date1), `07/1/10 åå10:00`); >+ shouldBe(fmt12.format(date8), `07/1/11 åå12:00`); >+ compareParts(fmt12.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt12.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt12.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt12.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ compareParts(fmt12.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":"æ","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"åï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":"æ","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":"å","source":"shared"}, >+ ]); >+ if ($vm.icuVersion() > 66) { >+ compareParts(fmt12.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ } >+ >+ // "hc" + hour12. >+ let fmt13 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h24', >+ hour12: true, >+ }); >+ shouldBe(fmt13.format(date1), `07/1/10 åå10:00`); >+ shouldBe(fmt13.format(date8), `07/1/11 åå00:00`); >+ compareParts(fmt13.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt13.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt13.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt13.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt13.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt13.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ >+ let fmt14 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h23', >+ hour12: true, >+ }); >+ shouldBe(fmt14.format(date1), `07/1/10 åå10:00`); >+ shouldBe(fmt14.format(date8), `07/1/11 åå00:00`); >+ compareParts(fmt14.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt14.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt14.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt14.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt14.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt14.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ >+ let fmt15 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h11', >+ hour12: true, >+ }); >+ shouldBe(fmt15.format(date1), `07/1/10 åå10:00`); >+ shouldBe(fmt15.format(date8), `07/1/11 åå00:00`); >+ compareParts(fmt15.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt15.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt15.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt15.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt15.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt15.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ >+ let fmt16 = new Intl.DateTimeFormat("ja", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h12', >+ hour12: true, >+ }); >+ shouldBe(fmt16.format(date1), `07/1/10 åå10:00`); >+ shouldBe(fmt16.format(date8), `07/1/11 åå00:00`); >+ compareParts(fmt16.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt16.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt16.formatRangeToParts(date1, date5), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt16.formatRangeToParts(date1, date6), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt16.formatRangeToParts(date1, date7), [ >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"dayPeriod","value":"åå¾","source":"endRange"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt16.formatRangeToParts(date1, date8), [ >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"åå","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":"ï½","source":"shared"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"åå","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+} >diff --git a/JSTests/stress/intl-datetimeformat-formatrangetoparts-relevant-extensions.js b/JSTests/stress/intl-datetimeformat-formatrangetoparts-relevant-extensions.js >new file mode 100644 >index 0000000000000000000000000000000000000000..8998a2e369b5b79509fb81ebb8e9cd52c3e63d14 >--- /dev/null >+++ b/JSTests/stress/intl-datetimeformat-formatrangetoparts-relevant-extensions.js >@@ -0,0 +1,1776 @@ >+function shouldBe(actual, expected) { >+ if (actual !== expected) >+ throw new Error('bad value: ' + actual + ' expected value: ' + expected); >+} >+ >+function compareParts(actual, expected) { >+ shouldBe(actual.length, expected.length); >+ for (var i = 0; i < actual.length; ++i) { >+ shouldBe(actual[i].type, expected[i].type); >+ shouldBe(actual[i].value, expected[i].value); >+ shouldBe(actual[i].source, expected[i].source); >+ } >+} >+ >+function shouldThrow(func, errorMessage) { >+ var errorThrown = false; >+ var error = null; >+ try { >+ func(); >+ } catch (e) { >+ errorThrown = true; >+ error = e; >+ } >+ if (!errorThrown) >+ throw new Error('not thrown'); >+ if (String(error) !== errorMessage) >+ throw new Error(`bad error: ${String(error)}`); >+} >+ >+function test() { >+ let range = "âââ"; >+ if ($vm.icuVersion() >= 67) >+ range = " â "; >+ >+ let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0)); >+ let date2 = new Date(Date.UTC(2007, 0, 10, 11, 0, 0)); >+ let date3 = new Date(Date.UTC(2007, 0, 20, 10, 0, 0)); >+ let date4 = new Date(Date.UTC(2010, 0, 20, 10, 0, 0)); >+ >+ let date5 = new Date(Date.UTC(2007, 0, 10, 12, 0, 0)); >+ let date6 = new Date(Date.UTC(2007, 0, 10, 14, 0, 0)); >+ let date7 = new Date(Date.UTC(2007, 0, 10, 23, 0, 0)); >+ let date8 = new Date(Date.UTC(2007, 0, 11, 0, 0, 0)); >+ >+ // Test three relavant extensions. >+ // "nu" NumberingSystem >+ let fmt1 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ numberingSystem: 'hanidec', >+ }); >+ shouldBe(fmt1.format(date1), `ä¸/ä¸ã/ãä¸, äº:ãã AM`); >+ compareParts(fmt1.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"ä¸","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"ä¸ã","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"ãä¸","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"äº","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"ãã","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"ä¸","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"ãã","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt1.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"ä¸","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"ä¸ã","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"ãä¸","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"äº","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"ãã","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"ä¸","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"äºã","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"ãä¸","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"äº","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"ãã","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ >+ // "ca" Calendar >+ let fmt2 = new Intl.DateTimeFormat("en", { >+ year: 'numeric', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ calendar: 'chinese' >+ }); >+ shouldBe(fmt2.format(date1), `11/22/2006, 2:00 AM`); >+ compareParts(fmt2.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"11","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"22","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"relatedYear","value":"2006","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"2","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"3","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt2.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"11","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"22","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"relatedYear","value":"2006","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"2","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"12","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"2","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"relatedYear","value":"2006","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ >+ let fmt3 = new Intl.DateTimeFormat("en", { >+ year: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ calendar: 'chinese' >+ }); >+ shouldBe(fmt3.format(date1), `2006(bing-xu)`); >+ compareParts(fmt3.formatRangeToParts(date1, date2), [ >+ {"type":"relatedYear","value":"2006","source":"shared"}, >+ {"type":"literal","value":"(","source":"shared"}, >+ {"type":"yearName","value":"bing-xu","source":"shared"}, >+ {"type":"literal","value":")","source":"shared"}, >+ ]); >+ compareParts(fmt3.formatRangeToParts(date1, date3), [ >+ {"type":"relatedYear","value":"2006","source":"shared"}, >+ {"type":"literal","value":"(","source":"shared"}, >+ {"type":"yearName","value":"bing-xu","source":"shared"}, >+ {"type":"literal","value":")","source":"shared"}, >+ ]); >+ compareParts(fmt3.formatRangeToParts(date1, date4), [ >+ {"type":"relatedYear","value":"2006","source":"startRange"}, >+ {"type":"literal","value":"(","source":"startRange"}, >+ {"type":"yearName","value":"bing-xu","source":"startRange"}, >+ {"type":"literal","value":`)${range}`,"source":"shared"}, >+ {"type":"relatedYear","value":"2009","source":"endRange"}, >+ {"type":"literal","value":"(","source":"endRange"}, >+ {"type":"yearName","value":"ji-chou","source":"endRange"}, >+ {"type":"literal","value":")","source":"shared"}, >+ ]); >+ >+ // Calendar-sensitive format >+ let fmt4 = new Intl.DateTimeFormat('en-u-ca-buddhist', { >+ year: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ }); >+ shouldBe(fmt4.format(date1), `2550 BE`); >+ compareParts(fmt4.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"2550","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"era","value":"BE","source":"shared"}, >+ ]); >+ compareParts(fmt4.formatRangeToParts(date1, date3), [ >+ {"type":"year","value":"2550","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"era","value":"BE","source":"shared"}, >+ ]); >+ compareParts(fmt4.formatRangeToParts(date1, date4), [ >+ {"type":"year","value":"2550","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"year","value":"2553","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"era","value":"BE","source":"shared"}, >+ ]); >+ >+ // "hc" HourCycle >+ let fmt5 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h24', >+ }); >+ shouldBe(fmt5.format(date1), `1/10/07, 10:00`); >+ shouldBe(fmt5.format(date8), `1/11/07, 24:00`); >+ compareParts(fmt5.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt5.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt5.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt5.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"14","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt5.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"23","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ if ($vm.icuVersion() > 66) { >+ compareParts(fmt5.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"24","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ } >+ >+ let fmt6 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h23', >+ }); >+ shouldBe(fmt6.format(date1), `1/10/07, 10:00`); >+ shouldBe(fmt6.format(date8), `1/11/07, 00:00`); >+ compareParts(fmt6.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt6.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt6.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt6.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"14","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt6.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"23","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt6.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"00","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ >+ let fmt7 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h11', >+ }); >+ shouldBe(fmt7.format(date1), `1/10/07, 10:00 AM`); >+ shouldBe(fmt7.format(date8), `1/11/07, 0:00 AM`); >+ compareParts(fmt7.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ compareParts(fmt7.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ if ($vm.icuVersion() > 66) { >+ compareParts(fmt7.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ } >+ compareParts(fmt7.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt7.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ if ($vm.icuVersion() > 66) { >+ compareParts(fmt7.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ } >+ >+ let fmt8 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h12', >+ }); >+ shouldBe(fmt8.format(date1), `1/10/07, 10:00 AM`); >+ shouldBe(fmt8.format(date8), `1/11/07, 12:00 AM`); >+ compareParts(fmt8.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt8.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ compareParts(fmt8.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt8.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt8.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt8.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ >+ // "hc" + hour 2-digit >+ let fmt9 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h24', >+ }); >+ shouldBe(fmt9.format(date1), `1/10/07, 10:00`); >+ shouldBe(fmt9.format(date8), `1/11/07, 24:00`); >+ compareParts(fmt9.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt9.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt9.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt9.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"14","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt9.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"23","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ if ($vm.icuVersion() > 66) { >+ compareParts(fmt9.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"24","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ } >+ >+ let fmt10 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h23', >+ }); >+ shouldBe(fmt10.format(date1), `1/10/07, 10:00`); >+ shouldBe(fmt10.format(date8), `1/11/07, 00:00`); >+ compareParts(fmt10.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt10.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt10.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt10.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"14","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt10.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"23","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ compareParts(fmt10.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"00","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ ]); >+ >+ let fmt11 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h11', >+ }); >+ shouldBe(fmt11.format(date1), `1/10/07, 10:00 AM`); >+ shouldBe(fmt11.format(date8), `1/11/07, 00:00 AM`); >+ compareParts(fmt11.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ compareParts(fmt11.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ if ($vm.icuVersion() > 66) { >+ compareParts(fmt11.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ } >+ compareParts(fmt11.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt11.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ if ($vm.icuVersion() > 66) { >+ compareParts(fmt11.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"0","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ } >+ >+ let fmt12 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h12', >+ }); >+ shouldBe(fmt12.format(date1), `1/10/07, 10:00 AM`); >+ shouldBe(fmt12.format(date8), `1/11/07, 12:00 AM`); >+ compareParts(fmt12.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt12.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ compareParts(fmt12.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt12.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt12.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt12.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ >+ // "hc" + hour12. >+ let fmt13 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h24', >+ hour12: true, >+ }); >+ shouldBe(fmt13.format(date1), `1/10/07, 10:00 AM`); >+ shouldBe(fmt13.format(date8), `1/11/07, 12:00 AM`); >+ compareParts(fmt13.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt13.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ compareParts(fmt13.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt13.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt13.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt13.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ >+ let fmt14 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h23', >+ hour12: true, >+ }); >+ shouldBe(fmt14.format(date1), `1/10/07, 10:00 AM`); >+ shouldBe(fmt14.format(date8), `1/11/07, 12:00 AM`); >+ compareParts(fmt14.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt14.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ compareParts(fmt14.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt14.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt14.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt14.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ >+ let fmt15 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h11', >+ hour12: true, >+ }); >+ shouldBe(fmt15.format(date1), `1/10/07, 10:00 AM`); >+ shouldBe(fmt15.format(date8), `1/11/07, 12:00 AM`); >+ compareParts(fmt15.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt15.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ compareParts(fmt15.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt15.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt15.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt15.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ >+ let fmt16 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: '2-digit', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ hourCycle: 'h12', >+ hour12: true, >+ }); >+ shouldBe(fmt16.format(date1), `1/10/07, 10:00 AM`); >+ shouldBe(fmt16.format(date8), `1/11/07, 12:00 AM`); >+ compareParts(fmt16.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt16.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ compareParts(fmt16.formatRangeToParts(date1, date5), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt16.formatRangeToParts(date1, date6), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt16.formatRangeToParts(date1, date7), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"PM","source":"endRange"}, >+ ]); >+ compareParts(fmt16.formatRangeToParts(date1, date8), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"11","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"12","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+} >+ >+if (Intl.DateTimeFormat.formatRangeToParts) >+ test(); >diff --git a/JSTests/stress/intl-datetimeformat-formatrangetoparts-should-not-handle-gregorian-change-date.js b/JSTests/stress/intl-datetimeformat-formatrangetoparts-should-not-handle-gregorian-change-date.js >new file mode 100644 >index 0000000000000000000000000000000000000000..f7a1b980263a251f0200b7d86808410fe09d9173 >--- /dev/null >+++ b/JSTests/stress/intl-datetimeformat-formatrangetoparts-should-not-handle-gregorian-change-date.js >@@ -0,0 +1,76 @@ >+// Copyright 2019 the V8 project authors. All rights reserved. >+// Copyright 2020 Apple Inc. All rights reserved. >+// Use of this source code is governed by a BSD-style license. >+ >+function shouldBe(actual, expected) { >+ if (actual !== expected) >+ throw new Error('bad value: ' + actual); >+} >+ >+function compareParts(actual, expected, actualSourceUndefined) { >+ shouldBe(actual.length, expected.length); >+ for (var i = 0; i < actual.length; ++i) { >+ shouldBe(actual[i].type, expected[i].type); >+ shouldBe(actual[i].value, expected[i].value); >+ if (actualSourceUndefined) >+ shouldBe(actual[i].source, undefined); >+ } >+} >+ >+if ($vm.icuHeaderVersion() >= 67) { >+ let df = new Intl.DateTimeFormat("en"); >+ // A modern date >+ let d1 = new Date(2019, 3, 4); >+ let d2 = new Date(2019, 4, 5); >+ compareParts(df.formatToParts(d1), df.formatRangeToParts(d1, d1), true); >+ compareParts(df.formatToParts(d2), df.formatRangeToParts(d2, d2), true); >+ compareParts(df.formatRangeToParts(d1, d2), [ >+ {"type":"month","value":"4","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"4","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"2019","source":"startRange"}, >+ {"type":"literal","value":" â ","source":"shared"}, >+ {"type":"month","value":"5","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"5","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"2019","source":"endRange"}, >+ ]); >+ // An old date just before the Julian / Gregorian switch >+ let d3 = new Date(1582, 8, 13); >+ let d4 = new Date(1582, 9, 14); >+ compareParts(df.formatToParts(d3), df.formatRangeToParts(d3, d3), true); >+ compareParts(df.formatToParts(d4), df.formatRangeToParts(d4, d4), true); >+ compareParts(df.formatRangeToParts(d3, d4), [ >+ {"type":"month","value":"9","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"13","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"1582","source":"startRange"}, >+ {"type":"literal","value":" â ","source":"shared"}, >+ {"type":"month","value":"10","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"14","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"1582","source":"endRange"}, >+ ]); >+ // An older date >+ let d5 = new Date(1000, 0, 1); >+ let d6 = new Date(1001, 1, 2); >+ compareParts(df.formatToParts(d5), df.formatRangeToParts(d5, d5), true); >+ compareParts(df.formatToParts(d6), df.formatRangeToParts(d6, d6), true); >+ compareParts(df.formatRangeToParts(d5, d6), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"1000","source":"startRange"}, >+ {"type":"literal","value":" â ","source":"shared"}, >+ {"type":"month","value":"2","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"2","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"1001","source":"endRange"}, >+ ]); >+} >diff --git a/JSTests/stress/intl-datetimeformat-formatrangetoparts.js b/JSTests/stress/intl-datetimeformat-formatrangetoparts.js >new file mode 100644 >index 0000000000000000000000000000000000000000..44ebf26318f2b73b6303afc8e2bbe1716047f338 >--- /dev/null >+++ b/JSTests/stress/intl-datetimeformat-formatrangetoparts.js >@@ -0,0 +1,455 @@ >+function shouldBe(actual, expected) { >+ if (actual !== expected) >+ throw new Error('bad value: ' + actual); >+} >+ >+function compareParts(actual, expected) { >+ shouldBe(actual.length, expected.length); >+ for (var i = 0; i < actual.length; ++i) { >+ shouldBe(actual[i].type, expected[i].type); >+ shouldBe(actual[i].value, expected[i].value); >+ shouldBe(actual[i].source, expected[i].source); >+ } >+} >+ >+function shouldThrow(func, errorMessage) { >+ var errorThrown = false; >+ var error = null; >+ try { >+ func(); >+ } catch (e) { >+ errorThrown = true; >+ error = e; >+ } >+ if (!errorThrown) >+ throw new Error('not thrown'); >+ if (String(error) !== errorMessage) >+ throw new Error(`bad error: ${String(error)}`); >+} >+ >+let fmt0 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'America/Los_Angeles', >+}); >+ >+shouldThrow(() => { >+ fmt0.formatRangeToParts(); >+}, `TypeError: startDate or endDate is undefined`); >+ >+shouldThrow(() => { >+ fmt0.formatRangeToParts(new Date(Date.UTC(2008, 0, 20, 10, 0, 0)), new Date(Date.UTC(2007, 0, 10, 10, 0, 0))); >+}, `RangeError: startDate is larger than endDate`); >+ >+function test() { >+ let range = "âââ"; // This is not usual space unfortuantely in ICU 66. >+ if ($vm.icuVersion() >= 67) >+ range = " â "; >+ >+ let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0)); >+ let date2 = new Date(Date.UTC(2007, 0, 10, 11, 0, 0)); >+ let date3 = new Date(Date.UTC(2007, 0, 20, 10, 0, 0)); >+ let date4 = new Date(Date.UTC(2008, 0, 20, 10, 0, 0)); >+ >+ { >+ let fmt1 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ }); >+ shouldBe(fmt1.format(date1), `1/10/07, 2:00 AM`); >+ compareParts(fmt1.formatRangeToParts(date1, date1), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"2","source":"shared"}, >+ {"type":"literal","value":":","source":"shared"}, >+ {"type":"minute","value":"00","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt1.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"2","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"3","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt1.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"2","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"2","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ } >+ >+ { >+ let fmt1 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ }); >+ shouldBe(fmt1.format(date1), `1/10/07`); >+ compareParts(fmt1.formatRangeToParts(date1, date1), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ ]); >+ compareParts(fmt1.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ ]); >+ compareParts(fmt1.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ ]); >+ } >+ >+ >+ { >+ let fmt1 = new Intl.DateTimeFormat("en", { >+ year: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ }); >+ shouldBe(fmt1.format(date1), `2007`); >+ compareParts(fmt1.formatRangeToParts(date1, date1), [ >+ {"type":"year","value":"2007","source":"shared"}, >+ ]); >+ compareParts(fmt1.formatRangeToParts(date1, date2), [ >+ {"type":"year","value":"2007","source":"shared"}, >+ ]); >+ compareParts(fmt1.formatRangeToParts(date1, date4), [ >+ {"type":"year","value":"2007","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"year","value":"2008","source":"endRange"}, >+ ]); >+ } >+ >+ { >+ let fmt1 = new Intl.DateTimeFormat("en", { >+ year: '2-digit', >+ month: 'numeric', >+ day: 'numeric', >+ hour: 'numeric', >+ minute: 'numeric', >+ timeZone: 'UTC', >+ }); >+ shouldBe(fmt1.format(date1), `1/10/07, 10:00 AM`); >+ compareParts(fmt1.formatRangeToParts(date1, date1), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"shared"}, >+ {"type":"literal","value":":","source":"shared"}, >+ {"type":"minute","value":"00","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt1.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"07","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"hour","value":"11","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"dayPeriod","value":"AM","source":"shared"}, >+ ]); >+ compareParts(fmt1.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"07","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"hour","value":"10","source":"startRange"}, >+ {"type":"literal","value":":","source":"startRange"}, >+ {"type":"minute","value":"00","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"dayPeriod","value":"AM","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"07","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"hour","value":"10","source":"endRange"}, >+ {"type":"literal","value":":","source":"endRange"}, >+ {"type":"minute","value":"00","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"dayPeriod","value":"AM","source":"endRange"}, >+ ]); >+ } >+ >+ { >+ let fmt2 = new Intl.DateTimeFormat("en", { >+ year: 'numeric', >+ month: 'short', >+ day: 'numeric', >+ timeZone: 'America/Los_Angeles', >+ }); >+ shouldBe(fmt2.format(date1), `Jan 10, 2007`); >+ compareParts(fmt2.formatRangeToParts(date1, date1), [ >+ {"type":"month","value":"Jan","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"year","value":"2007","source":"shared"}, >+ ]); >+ compareParts(fmt2.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"Jan","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"day","value":"10","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"year","value":"2007","source":"shared"}, >+ ]); >+ compareParts(fmt2.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"Jan","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"day","value":"10","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"day","value":"20","source":"endRange"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"year","value":"2007","source":"shared"}, >+ ]); >+ } >+ { >+ const date1 = new Date("2019-01-03T00:00:00"); >+ const date2 = new Date("2019-01-05T00:00:00"); >+ const date3 = new Date("2019-03-04T00:00:00"); >+ const date4 = new Date("2020-03-04T00:00:00"); >+ >+ let dtf = new Intl.DateTimeFormat("en-US"); >+ compareParts(dtf.formatRangeToParts(date1, date1), [ >+ {"type":"month","value":"1","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"day","value":"3","source":"shared"}, >+ {"type":"literal","value":"/","source":"shared"}, >+ {"type":"year","value":"2019","source":"shared"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"3","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"2019","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"1","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"5","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"2019","source":"endRange"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"3","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"2019","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"3","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"4","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"2019","source":"endRange"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date1, date4), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"3","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"2019","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"3","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"4","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"2020","source":"endRange"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date2, date3), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"5","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"2019","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"3","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"4","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"2019","source":"endRange"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date2, date4), [ >+ {"type":"month","value":"1","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"5","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"2019","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"3","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"4","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"2020","source":"endRange"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date3, date4), [ >+ {"type":"month","value":"3","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"day","value":"4","source":"startRange"}, >+ {"type":"literal","value":"/","source":"startRange"}, >+ {"type":"year","value":"2019","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"3","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"day","value":"4","source":"endRange"}, >+ {"type":"literal","value":"/","source":"endRange"}, >+ {"type":"year","value":"2020","source":"endRange"}, >+ ]); >+ >+ dtf = new Intl.DateTimeFormat("en-US", {year: "numeric", month: "short", day: "numeric"}); >+ compareParts(dtf.formatRangeToParts(date1, date1), [ >+ {"type":"month","value":"Jan","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"day","value":"3","source":"shared"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"year","value":"2019","source":"shared"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date1, date2), [ >+ {"type":"month","value":"Jan","source":"shared"}, >+ {"type":"literal","value":" ","source":"shared"}, >+ {"type":"day","value":"3","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"day","value":"5","source":"endRange"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"year","value":"2019","source":"shared"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date1, date3), [ >+ {"type":"month","value":"Jan","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"day","value":"3","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"Mar","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"day","value":"4","source":"endRange"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"year","value":"2019","source":"shared"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date1, date4), [ >+ {"type":"month","value":"Jan","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"day","value":"3","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"year","value":"2019","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"Mar","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"day","value":"4","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"year","value":"2020","source":"endRange"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date2, date3), [ >+ {"type":"month","value":"Jan","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"day","value":"5","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"Mar","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"day","value":"4","source":"endRange"}, >+ {"type":"literal","value":", ","source":"shared"}, >+ {"type":"year","value":"2019","source":"shared"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date2, date4), [ >+ {"type":"month","value":"Jan","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"day","value":"5","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"year","value":"2019","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"Mar","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"day","value":"4","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"year","value":"2020","source":"endRange"}, >+ ]); >+ compareParts(dtf.formatRangeToParts(date3, date4), [ >+ {"type":"month","value":"Mar","source":"startRange"}, >+ {"type":"literal","value":" ","source":"startRange"}, >+ {"type":"day","value":"4","source":"startRange"}, >+ {"type":"literal","value":", ","source":"startRange"}, >+ {"type":"year","value":"2019","source":"startRange"}, >+ {"type":"literal","value":range,"source":"shared"}, >+ {"type":"month","value":"Mar","source":"endRange"}, >+ {"type":"literal","value":" ","source":"endRange"}, >+ {"type":"day","value":"4","source":"endRange"}, >+ {"type":"literal","value":", ","source":"endRange"}, >+ {"type":"year","value":"2020","source":"endRange"}, >+ ]); >+ } >+} >+ >+if (Intl.DateTimeFormat.formatRangeToParts) >+ test(); >diff --git a/JSTests/test262/config.yaml b/JSTests/test262/config.yaml >index 2aa9cbbbed303f9173cfec02b9dd6947cb3694f3..4fbfe266267b7d5fa3698ffad8216d6b80266650 100644 >--- a/JSTests/test262/config.yaml >+++ b/JSTests/test262/config.yaml >@@ -94,10 +94,6 @@ skip: > - test/built-ins/Atomics/sub/bigint > - test/built-ins/Atomics/wait/bigint > - test/built-ins/Atomics/xor/bigint >- >- # requires ICU APIs implementation >- # https://bugs.webkit.org/show_bug.cgi?id=213822 >- - test/intl402/DateTimeFormat/prototype/formatRangeToParts > files: > # https://bugs.webkit.org/show_bug.cgi?id=190800 > - test/built-ins/Object/seal/seal-bigint64array.js >diff --git a/JSTests/test262/expectations.yaml b/JSTests/test262/expectations.yaml >index 631e5c9bc9b4da0f4785864bd66dd7e9b341539f..6f3c9f6a37476bf86b41d77f590ba7fa89d0204b 100644 >--- a/JSTests/test262/expectations.yaml >+++ b/JSTests/test262/expectations.yaml >@@ -955,6 +955,12 @@ test/intl402/DateTimeFormat/prototype/formatRange/en-US.js: > test/intl402/DateTimeFormat/prototype/formatRange/fractionalSecondDigits.js: > default: 'Test262Error: no fractionalSecondDigits Expected SameValue(«02:03âââ02:13», «02:03 â 02:13») to be true' > strict mode: 'Test262Error: no fractionalSecondDigits Expected SameValue(«02:03âââ02:13», «02:03 â 02:13») to be true' >+test/intl402/DateTimeFormat/prototype/formatRangeToParts/en-US.js: >+ default: 'Test262Error: value for entry 5 Expected SameValue(«âââ», « â ») to be true' >+ strict mode: 'Test262Error: value for entry 5 Expected SameValue(«âââ», « â ») to be true' >+test/intl402/DateTimeFormat/prototype/formatRangeToParts/fractionalSecondDigits.js: >+ default: 'Test262Error: value for entry 3 Expected SameValue(«âââ», « â ») to be true' >+ strict mode: 'Test262Error: value for entry 3 Expected SameValue(«âââ», « â ») to be true' > test/intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle-default.js: > default: 'Test262Error: Expected SameValue(«h24», «h23») to be true' > strict mode: 'Test262Error: Expected SameValue(«h24», «h23») to be true'
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 213822
:
413573
|
413574
|
413575
|
413576
|
413578
|
413611
|
413657
|
413674
|
413780
|
413783
|
413788
|
413805
|
413862
|
413866
|
413876
|
413883