我想使用IntlDateTimeFormat提供前导零。我的代码是:
const timeFormatter = Intl.DateTimeFormat(undefined,{minute: '2-digit'});
const date = new Date();
date.setMinutes(4);
console.log(timeFormatter.format(date)); // PRINTS: 4 and not 04
但是,当我将second: '2-digit'
添加到选项对象时。然后它工作正常,但也打印秒(是的,我可以使用替换删除它)。
那么“2-digit”和“numeric”有什么区别呢?
从现在起,我将忽略padStart。
我尝试将配置更改回“数字”而不是“2位”。似乎没有什么区别
1条答案
按热度按时间szqfcxe21#
“2-digit”和“numeric”有什么区别?
并非所有选项都适用于所有选项组合的所有序列化。
(仅)对于支持以给定语言序列化2位数分钟的格式,该设置控制分钟将表示为1位数还是2位数。
Intl.DateTimeFormat.prototype.format()
生成的格式化字符串 * 既 * 依赖于实现,也依赖于语言,因此它们不适合生成需要精确匹配模式的字符串。其他组合也可能会产生你不期望的字符串:
基于您问题中的示例代码:如果您的目标是将1位或2位整数转换为前导为0的2位字符串,那么
String.prototype.padStart()
是惯用的解决方案: