如何移除JavaScript中toLocaleString()输出的日期与时间间的逗号
移除toLocaleString输出中日期与时间的逗号分隔
这个问题其实很常见,toLocaleString('en', options)在英文 locale 下默认会用逗号加空格分隔日期和时间部分,要改成空格直接连接的格式,有两种稳妥的实现方式:
方法一:分别格式化日期和时间再拼接
最直接的思路是用toLocaleDateString单独生成日期部分,toLocaleTimeString单独生成时间部分,然后用空格把两者拼起来,完全避开默认的逗号分隔:
var date = "03/05/2013"; var localDate = date.split("/").reverse().join("-"); var localTime = "20:41"; var UTCDateTime = localDate+ "T" + localTime +":00.000Z"; localDateTime = new Date(UTCDateTime); // 拆分日期和时间的配置项 var dateOptions = { day: '2-digit', month: '2-digit', year: 'numeric' }; var timeOptions = { hour12: false, hour: '2-digit', minute:'2-digit' }; // 分别格式化后拼接 var formattedDateTime = `${localDateTime.toLocaleDateString('en', dateOptions)} ${localDateTime.toLocaleTimeString('en', timeOptions)}`; console.log("Date:>>" + formattedDateTime); // 输出 "05/03/2013 21:41"
这种方法简单直观,不需要处理字符串替换或者复杂的部分提取,适合需求固定的场景。
方法二:用formatToParts自定义拼接
如果需要更灵活的格式控制(比如以后可能要修改分隔符或者调整其他部分),可以用Intl.DateTimeFormat的formatToParts方法,它会把格式化后的内容拆分成一个个带类型的片段,我们可以过滤掉不需要的逗号分隔符,再重新拼接:
var date = "03/05/2013"; var localDate = date.split("/").reverse().join("-"); var localTime = "20:41"; var UTCDateTime = localDate+ "T" + localTime +":00.000Z"; localDateTime = new Date(UTCDateTime); var options = { hour12: false, day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute:'2-digit' }; // 获取格式化后的各个片段 const parts = new Intl.DateTimeFormat('en', options).formatToParts(localDateTime); // 过滤掉逗号分隔符,拼接成目标格式 const formattedDateTime = parts .filter(part => !(part.type === 'literal' && part.value === ', ')) .map(part => part.value) .join(''); console.log("Date:>>" + formattedDateTime); // 输出 "05/03/2013 21:41"
这种方法的优势在于可以精准控制每一个格式化部分,避免字符串替换可能带来的意外(比如如果日期或时间里恰好包含逗号的情况,不过这个场景里概率很低,但严谨性更高)。
内容的提问来源于stack exchange,提问作者user2235768
相关产品推荐
相关产品推荐

