new Intl.DateTimeFormat('en', {
second: '2-digit'
})
ожидалось, что секунды будут выводиться в формате 01 02 03, но вместо этого выводятся 1 2 3, при чем когда я вывожу не только секунды, а и минуты
new Intl.DateTimeFormat('en', {
minute: '2-digit',
second: '2-digit'
})
то результат как и ожидалось будет 00:00, при чем есть еще одна особенность, если значение ключа указать 'numeric' то результат будет такой же
new Intl.DateTimeFormat('en', {
minute: 'numeric',
second: 'numeric'
})
выведет 00:00, хотя ожидается 0:0 - это нормальная работа этого конструктора и на что вообще должны влиять 'numeric' и '2-digit'?
и всё-таки есть способ вывести одни секунды в формате 00 с помощью Intl?
Тут, насколько я смог разобраться в стандарте, вырисовывается следующая картина. Стандарт говорит, что элементы внутреннего свойства [[localeData]], соответствующие поддерживаемым локалям, должны содержать свойство formats, в котором перечислены все поддерживаемые комбинации опций, с соответствующими значениями этих опций. Конструктор при вызове ищет в этом списке комбинацию, наиболее близко соответствующую переданным опциям, и применяет именно найденные свойства.
Судя по всему в [[localeData]]['en'] хранится что-то таком духе: [..., {seconds : 'decimal'}, ...], и нет ничего более близкого к передаваемому {seconds : '2-digit'}. Что-то аналогичное происходит и во втором случае, когда передается {minute: 'numeric', second: 'numeric'}. Находится только {minute: '2-digit', second: '2-digit'}, и в итоге применяются именно эти опции.
Результат можно наблюдать при помощи метода resolvedOptions():
console.log(new Intl.DateTimeFormat('en', {
second: '2-digit'
}).resolvedOptions());
console.log(new Intl.DateTimeFormat('en', {
minute: 'numeric',
second: 'numeric'
}).resolvedOptions());
Мораль такова: использовать произвольные сочетания опций форматирования нельзя, а можно только определенные их комбинации. К сожалению, не знаю, где посмотреть доступные варианты, и есть ли среди локалей такая, в которой предусмотрено использование {second : '2-digit'}.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости