首页 > 建站教程 > JS、jQ、TS >  moment 常用时间方法正文

moment 常用时间方法

moment 官方声明已经不再更新了,而且moment包体积太大,有 280.9 kB,对于 Tree shaking 也无效,个人建议使用dayjs,比较轻量,包体积仅有 2 kB ,API也几乎跟moment一样

1、获取日期的23时59分59秒
//今天的
moment().endOf('day')
//指定日期的
moment('2020-06-25').endOf('day')

2、获取日期的0时0分0秒
//今天的,跟上面的endOf一样的
moment().startOf('day')

3、获取时间戳
moment().endOf('day').valueOf()

4、时间戳转日期
moment(val).format("YYYY-MM-DD HH:mm:ss")

5、获取当前时间前 X 天
moment().subtract(1, "days").format("YYYY-MM-DD HH:mm:ss"); //1就是前1天,2就是前两天

6、获取当前时间前 X 周
moment().subtract(1, "weeks").format("YYYY-MM-DD");//月把weeks改成months

可以取的值
years
quarters
months
weeks
days
hours
minutes
seconds
milliseconds

7、获取之后的时间 (add)
moment().add(1, "years").format("YYYY-MM-DD HH:mm:ss");//一年后
moment().add(1, "hours").format("YYYY-MM-DD HH:mm:ss");//一个小时后

8、获取本周三时间
moment().weekday(3).format('YYYY-MM-DD');

9、获取上周五时间
moment().weekday(-2).format('YYYY-MM-DD');//简单理解为上周倒数第几天,和当天日期无关

10、获取一个月多少天
moment().daysInMonth()

11、比较两个时间大小
data1=moment("2020-11-12 13:20:59")
data2=moment("2020-11-10 13:20:59")
data1.diff(data2, "minute")

12、根据 moment.js 获取开始结束时间段
moment().startOf(String)  //  开始时间
moment().endOf(String)  //  结束时间

13、根据 moment.js 计算时间
moment().add(Number, String);  //  加法
moment().subtract(Number, String);  //  减法

String - 通过将其设置为一个时间单位的开始来改变原始时刻:
传入 key 与 Shorthand 获取到的效果是相同的。



// 获取当天的开始结束时间
function getCurrentDays() {
  const startDate = moment().startOf("days").format("YYYY-MM-DD");
  const endDate = moment().endOf("days").format("YYYY-MM-DD");
  return [startDate, endDate];
}

// 获取当周的开始结束时间,周日至周一
function getCurrentWeekdays() {
  const startDate = moment().startOf("weeks").format("YYYY-MM-DD");
  const endDate = moment().endOf("weeks").format("YYYY-MM-DD");
  return [startDate, endDate];
}

// 获取当月的开始结束时间
function getCurrentMonth() {
  const startDate = moment().startOf("month").format("YYYY-MM-DD");
  const endDate = moment().endOf("month").format("YYYY-MM-DD");
  return [startDate, endDate];
}

// 获取上周的开始结束时间
function getLastWeekdays() {
  const startDate = moment().week(moment().week() - 1).startOf("weeks").format("YYYY-MM-DD");
  const endDate = moment().week(moment().week() - 1).endOf("weeks").format("YYYY-MM-DD");
  return [startDate, endDate];
}

// 获取上月的开始结束时间
function getLastMonth() {
  const startDate = moment().month(moment().month() - 1).startOf("month").format("YYYY-MM-DD");
  const endDate = moment().month(moment().month() - 1).endOf("month").format("YYYY-MM-DD");
  return [startDate, endDate];
}

// 获取下周的开始结束时间
function getNextWeekdays() {
  const startDate = moment().week(moment().week() + 1).startOf("weeks").format("YYYY-MM-DD");
  const endDate = moment().week(moment().week() + 1).endOf("weeks").format("YYYY-MM-DD");
  return [startDate, endDate];
}

// 获取下月的开始结束时间
function getNextMonth() {
  const startDate = moment().month(moment().month() + 1).startOf("month").format("YYYY-MM-DD");
  const endDate = moment().month(moment().month() + 1).endOf("month").format("YYYY-MM-DD");
  return [startDate, endDate];
}

// 获取n天前的开始结束时间
function getBefore3days() {
  // 减法 moment.subtract(number, String)
  const startDate = moment().subtract(3, 'days').format("YYYY-MM-DD");
  const endDate = moment().subtract(3, 'days').format("YYYY-MM-DD");
  return [startDate, endDate];
}

// 获取n天后的开始结束时间
function getAfter3days() {
  // 减法 moment.add(number, String)
  const startDate = moment().add(3, 'days').format("YYYY-MM-DD");
  const endDate = moment().add(3, 'days').format("YYYY-MM-DD");
  return [startDate, endDate];
}