Momentjs格式化周数问题
Moment.js是一个轻量级的js时间处理类库,其使用简单,方便了日常开发中对时间的操作,提高了开发效率。虽然大家经常用,但是我这次在项目中使用了一次,出现了严重的bug,下面就简单的把bug描述一下!
Moment有一个格式化的方法 format()
,可以把日期格式化成需要的格式:http://momentjs.cn/docs/#/displaying/format/
这里我特意把这几个标识出来,因为这个地方会存在问题。
我先写一个demo本地运行一下试试:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script crossorigin="anonymous" integrity="sha512-CTSrPIDxxtTdaIYlTKHEyvHa+70TOhC1pY3PLDgrUqCFifFtV7KrucZCvPy2K7hB0HtKgt0r4INTGBISqnaLNg==" src="https://lib.baomitu.com/moment.js/2.29.4/moment.js"></script>
<title>Document</title>
<script>
let t1 = moment('2014-12-31').format('YYYY-ww');
let t2 = moment('2014-12-31').format('GGGG-WW');
console.log(t1, t2);
</script>
</head>
<body></body>
</html>
问题就出现在跨年的时计算周数的时候,YYYY-ww
和GGGG-WW
!这两个打印出来的,结果为:2014-01和2015-01,是不是挺诡异的。
遇到这种情况,只能以ISO
格式去做转换才可以,这个坑还真有点深啊……