开发中经常遇到日期/时间的相关操作,moment.js为此类操作带来了极大的便利,下面通过一个简单的需求,记录一下moment.js的基本用法。

需求

获取最近三周的每周一和周日,并将每周的日期罗列出来。

安装并引入moment.js

  • cdn方式
    在html页中引入moment.js
    1
    <script src="http://cdn.staticfile.org/moment.js/2.24.0/moment.min.js"></script>
  • npm方式
    首先执行npm i moment,安装moment。然后在相关ts或者js文件中引入moment
    1
    import * as moment from 'moment';

moment.js使用

在写js逻辑代码的地方,编写如下代码,即可实现上述需求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
let week = 3; // 周数
// 今天星期几
let weekOfDay = new Date().getDay();
// 或者也可以这样写
// let weekOfDay = moment().day();

// 今天多少号
// let day = moment().date();

// 循环所有周
for (let i = 0; i < week; i++) {
let last_monday = '',
last_sunday = '',
obj = {};
// 获取指定周数的每个周一
last_monday = moment()
.subtract(weekOfDay + 7 * i - 1, 'days')
.format('YYYY/MM/DD');
// 获取指定周数的每个周日
last_sunday = moment()
.subtract(weekOfDay + 7 * (i - 1), 'days')
.format('YYYY/MM/DD');
var data = [];
// 获取当前周的每一天
for (let j = 1; j <= 7; j++) {
var day = moment()
.subtract(weekOfDay + 7 * i - j, 'days')
.format('YYYY/MM/DD');
data[j - 1] = day;
}
obj.date = `${last_monday} ~ ${last_sunday}`;
obj.data = data;
console.log(obj);
}