我们在处理日期展示的时候经常需要将时间戳转换为格式化的日期,比较省力的方法是直接使用日期格式化的NPM包,比如:moment.js。但是有时候你不想因为这个小需求引入一个包,或者你想用原生JavaScript实现格式化。
可能的实现是这样的:
const date = new Date(); const year = da(); const month = da() + 1; const day = da(); const hour = da(); const min = da(); const ss = da(); con(`${year}-${month}-${day} ${hour}:${min}:${ss}`); // 2021-8-1 10:31:45
但是这样还不符合格式,因为月份,日期,小时,分,秒有可能是一位数字,需要在数字前补0。所以上面的代码还需要修改一下:
const padZero = function(num){ return num < 10 ? `0${num}` : num;} const date = new Date(); const year = da(); const month = da() + 1; const day = da(); const hour = da(); const min = da(); const ss = da(); con(`${year}-${padZero(month)}-${padZero(day)} ${padZero(hour)}:${padZero(min)}:${padZero(ss)}`); // 2021-08-01 10:38:26
我们实现了一个工具数字大小自动补零的方法,除了上面的方法还有别的方式吗?JavaScript作为一个非常灵活的语言,一定有其他的实现方式。今天就看到一个巧妙的解决办法。
const date = new Date(); const year = da(); const month = '0' + (da() + 1); const day = '0' + da(); const hour = '0' + da(); const min = '0' + da(); const ss = '0' + da(); con(`${year}-${mon(-2)}-${day.slice(-2)} ${(-2)}:${min.slice(-2)}:${(-2)}`); // 2021-08-01 13:43:29
先通过统一添加前缀字符"0",然后再统一截取后两位字符。这样做确实很聪明,很好地达到了格式化的目的。
语言没有高低之分,水平在乎自己。
欢迎大家点赞,评论,收藏,转发。