如何去除mm/dd/yyyy格式日期中的前导零
如何去除mm/dd/yyyy格式日期中的前导零
嘿,我来帮你搞定这个问题!你之前用的正则/0*\//g没达到预期,是因为它会把所有的零和斜杠都替换掉,比如04/09会直接变成49,完全不符合咱们的需求。咱们换两种靠谱的方式来实现:
方法一:精准正则替换
用正则匹配仅出现在月份开头或日期开头的前导零,这样就不会误删其他位置的零(比如时间里的10:45的0就不会被改动)。
代码示例:
const dateString = "04/09/2024 10:45"; const cleanedDate = dateString.replace(/(?<=^|\/)0(?=\d)/g, ''); console.log(cleanedDate); // 输出:4/9/2024 10:45
给你拆解下这个正则的逻辑:
(?<=^|\/):正向回顾断言,确保要替换的0是在字符串开头(对应月份的位置)或者斜杠后面(对应日期的位置)0:就是咱们要移除的前导零(?=\d):正向展望断言,确保这个0后面跟着一个数字,避免误删非前导零的情况(比如10/12/2024里的10就不会被改成1)
方法二:用Date对象处理(更稳妥)
如果担心正则的边缘情况,或者想顺便验证日期的有效性,可以用Date对象来拆解日期再重新拼接:
代码示例:
const dateString = "04/09/2024 10:45"; const date = new Date(dateString); // 提取各部分,月份要加1(因为getMonth()返回0-11) const month = date.getMonth() + 1; const day = date.getDate(); const year = date.getFullYear(); // 保留原时间部分 const time = dateString.split(' ')[1]; const cleanedDate = `${month}/${day}/${year} ${time}`; console.log(cleanedDate); // 输出:4/9/2024 10:45
这种方法的好处是:如果输入的是无效日期(比如02/30/2024),Date对象会自动修正为合理日期,同时完成格式化。
备注:内容来源于stack exchange,提问作者D. Fowler
相关产品推荐
相关产品推荐

