JavaScript获取无空格格式时间及数据库排序用时间补零与自定义格式实现问询
嘿,我来帮你搞定这个时间格式化的问题~
首先,你遇到的单个数字时间部分缺失前导零的问题,用ES6的padStart()方法就能轻松解决。这个方法可以帮我们把数字转成固定长度的字符串,不足的部分用指定字符(这里是'0')填充在前面。
先给你一个完整的解决方案,刚好满足你要的210629193645格式:
// 工具函数:把数字补成两位字符串,单个数字自动加前导零 const padZero = (num) => num.toString().padStart(2, '0'); // 生成你需要的格式化时间字符串 const getTargetDateTime = () => { const now = new Date(); // 提取年份后两位 const year = now.getFullYear().toString().slice(-2); // 月份是0-11,所以要加1再补零 const month = padZero(now.getMonth() + 1); const day = padZero(now.getDate()); const hours = padZero(now.getHours()); const minutes = padZero(now.getMinutes()); const seconds = padZero(now.getSeconds()); // 拼接成目标格式 return `${year}${month}${day}${hours}${minutes}${seconds}`; }; // 测试一下 console.log(getTargetDateTime()); // 示例输出:210629193645
关键细节解释:
padZero()函数:比如把5转成"05",19保持"19",完美解决你说的秒数是个位数时缺失前导零的问题。- 月份处理:
getMonth()返回的是0到11的数字(1月对应0),所以必须加1之后再补零,不然6月会变成"05"就错啦。 - 年份后两位:用
slice(-2)直接截取年份字符串的最后两位,比如2021就变成"21"。
另外,你提到的“无空格格式的时间”,上面的函数生成的就是完全无空格的字符串。如果只需要时间部分(比如时分秒),直接拼接hours + minutes + seconds就行,结果也是193645这种无空格的格式。
最后,你之前代码里new Date(new Date().toISOString())其实没必要,直接new Date()就能获取当前时间,简化一下更清爽~
内容的提问来源于stack exchange,提问作者Utkarsh Tyagi
相关产品推荐
相关产品推荐

