Skip to content

Commit e141e9d

Browse files
duration (#403)
1 parent 5880614 commit e141e9d

File tree

3 files changed

+503
-2
lines changed

3 files changed

+503
-2
lines changed

index.html

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
<tr><td colspan="2"></td><td><a class="blue" href="tests/dtf.html">date-time components</a></td></tr>
6262
<tr><td colspan="2"></td><td><a class="blue" href="tests/dtfstyle.html">date-&-timestyle</a></td></tr>
6363
<tr><td colspan="2"></td><td><a class="blue" href="tests/dtfdayperiod.html">dayperiod</a></td></tr>
64+
<tr><td colspan="2"></td><td><a class="blue" href="tests/df.html">durationformat</a></td></tr>
6465
<tr><td colspan="2"></td><td><a class="blue" href="tests/dtflistformat.html">listformat</a></td></tr>
6566
<tr><td colspan="2"></td><td><a class="blue" href="tests/nfnotation.html">notation</a></td></tr>
6667
<tr><td colspan="2"></td><td><a class="blue" href="tests/nftoparts.html">number</a>: formattoparts</td></tr>

js/region.js

+15-2
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,12 @@ function set_oIntlTests() {
272272
'short': [{weekday: 'short'}, [dates.Fri]],
273273
},
274274
},
275+
durationformat: {
276+
'digital': {'milliseconds': 1},
277+
'long': {'years': 0, 'seconds': 2, 'microseconds': 1000},
278+
'narrow': {'years': 1, 'months': 2, 'microseconds': 1},
279+
'short': {'days': 2, 'seconds': 2, 'nanoseconds': 2},
280+
},
275281
listformat: {
276282
'narrow': ['conjunction','disjunction','unit'],
277283
'short': ['conjunction','unit']
@@ -590,6 +596,13 @@ function get_locale_intl() {
590596
tests[key].forEach(function(item) {data.push(formatter.format(dayperiods[item]))})
591597
obj[key] = data
592598
}
599+
} else if ('durationformat' == m) {
600+
for (let i=0; i < testkeys.length; i++) {
601+
let key = testkeys[i]
602+
let yearformat = 'long' == key ? 'always' : 'auto' // long we want to force 0 for years
603+
let formatter = new Intl.DurationFormat(code, {style: key, yearsDisplay: yearformat})
604+
obj[key] = formatter.format(tests[key]) // there's only one test per style
605+
}
593606
} else if ('listformat' == m) {
594607
for (let i=0; i < testkeys.length; i++) {
595608
let key = testkeys[i], data = []
@@ -716,8 +729,8 @@ function get_locale_intl() {
716729
}
717730
const oMetrics = {
718731
intl : [
719-
'collation','compact', 'currency', 'datetimeformat','dayperiod', 'listformat','notation','numberformat_ftp',
720-
'pluralrules','relativetimeformat','relativetimeformat_ftp','sign','timezonename','unit'
732+
'collation','compact','currency','durationformat','datetimeformat','dayperiod','listformat','notation',
733+
'numberformat_ftp','pluralrules','relativetimeformat','relativetimeformat_ftp','sign','timezonename','unit'
721734
],
722735
tolocalestring: ['compact','currency','datetimeformat','notation','sign','timezonename','unit'],
723736
}

0 commit comments

Comments
 (0)