moment.js的一些使用小场景

1、获取包括今天之内的后七天

const dateAfterDays = (num = 7, format = 'MM-DD') => {
  let days = []
  for (let i = 0; i< num; i++) {
    const day = moment().add(i, 'days').format(format)
    days.push(day)
  }
  return days
}
// 例如今天是11.17那返回的结果就是
// ['11.17', '11.18', '11.19', '11.20', '11.21', '11.22', '11.23']
// 如果你想从明天开始的后七天,那么 moment().add()第一个参数就从1开始,以此类推

2、获取包括今天之内的后七天对应的星期
注意:moment返回的星期只是对应的数值,例如周日是0,周一是1,。。。周六是6,这里需要我们自己转一下

const WEEK_ENUM = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
const dataAfterWeek = (num = 7) => {
  let weeks = []
  const days = this.dateAfterDays(num, 'YYYY-MM-DD')
  for (let i = 0; i< days.length; i++) {
    const week = moment(days[i]).day()
    weeks.push(WEEK_ENUM[week])
  }
  return weeks
}
// 例如今儿是周四,那么返回的结果就是
// ['周四', '周五', '周六', '周日', '周一', '周二', '周三']

3、判断一个时间在不在某个时间范围内
我这的一个需求场景:
例如今天是2022-11-17
* 如果是今日早上8点之前,则为2022-11-16 20:00:00
* 早上8点到晚上8点之间,则为2022-11-17 08:00:00
* 如果是晚上8点之后,则为2022-11-17 20:00:00

const compareTime = () => {
  let resultTime = ''
  // 当前日期
  let date = moment().format('YYYY-MM-DD')
  // 当前日期的前一天
  let beforeDate = moment().subtract(1, 'days').format('YYYY-MM-DD')
  /*
  * 判断时间范围
  */
  // 格式化当前时间
  let datetime = moment().format('YYYY-MM-DD HH:mm:ss')
  // 如果当前日期在当天的0点至早上8点
  let beforeFlag = moment(datetime).isBetween(`${date} 00:00:00`, `${date} 08:00:00`, null, '[]')
  if (beforeFlag) {
    resultTime = `${beforeDate} 20:00:00`
  }
  // 如果当前时间在早上8点到20点之间  () 表示既不包含前一个时间,也不包含后一个时间,这里表示当日早上八点到晚上8点 开区间
  let currentFlag = moment(datetime).isBetween(`${date} 08:00:00`, `${date} 20:00:00`, null, '()')
  if (currentFlag) {
    resultTime = `${date} 08:00:00`
  }
  // 如果当前时间在20点之后 [] 表示包含前后两个时间,包含当日晚上8点到晚上24点 闭区间
  let afterFlag = moment(datetime).isBetween(`${date} 20:00:00`, `${date} 23:59:59`, null, '[]')
  if (afterFlag) {
    resultTime = `${date} 20:00:00`
  }
  return resultTime
},

注:moment的isBetween方法的第四个参数,是’()‘、’(]‘、’[)‘、’[]’ 区间是开是闭,视自己的需求情况而定。

### 回答1: Moment.js 是一个用于处理日期和时间的 JavaScript 库,可以轻松地获取年、月、日、星期等日期时间信息。 要获取年份,可以使用 `moment().year()`方法;如果要获取月份,可以使用`moment().month()+1`方法,由于`moment()`默认获取的月份是从0开始的(0代表1月,11代表12月),所以需要加1。如果需要获取日,可以使用`moment().date()`方法获取日期数字。此外,还可以使用`moment().day()`方法获取星期几的数字(0代表星期天,1代表星期一,以此类推)。 同时,Moment.js 还提供了一些格式化日期时间的方法,如`moment().format('YYYY-MM-DD')`可以将当前日期时间格式化为年月日的形式,`moment().format('dddd')`可以将当前日期时间格式化为星期几的形式。 在处理日期时间时,Moment.js 有着丰富的功能和灵活的 API,可以满足各种场景下的需求,是前端开发中不可或缺的工具之一。 ### 回答2: momentjs 是一个 JavaScript 的日期时间处理库,可以轻松地对日期进行各种操作。该库不仅支持常见的日期时间格式解析和格式化,而且还有强大的日期时间计算功能。其中,对于年月日星期的处理,momentjs 提供了各种方法和函数,以下是具体介绍: 1. 获取当前时间的年月日星期: moment().format('YYYY-MM-DD dddd'); 这个方法可以获取当前时间的年、月、日和星期几。其中,YYYY 表示四位的完整年份,MM 表示月份,DD 表示日期,dddd 表示完整的星期几。例如,2022 年 1 月 1 日是周六,使用上述方法得到的结果就是:"2022-01-01 Saturday"。 2. 解析指定字符串为日期: moment('20220101', 'YYYYMMDD').format('YYYY-MM-DD dddd'); 这个方法可以将指定的字符串解析为日期,并按照指定的格式进行格式化输出。其中,第一个参数是要解析的字符串,第二个参数是该字符串的格式。例如,上述代码中的参数 'YYYYMMDD' 表示该字符串的格式是年月日,所以使用 format() 方法输出的结果就是:"2022-01-01 Saturday"。 3. 获取指定时间的年月日星期: moment('20220101', 'YYYYMMDD').format('YYYY-MM-DD dddd'); 这个方法与解析字符串类似,只不过参数换成了指定的时间。例如,上述代码中的参数 '20220101' 表示要获取的时间是 2022 年 1 月 1 日,使用 format() 方法输出的结果也是:"2022-01-01 Saturday"。 4. 对日期进行加减操作: moment().add(1, 'days').format('YYYY-MM-DD dddd'); 这个方法可以对日期进行加减操作,例如上述代码中的 add(1, 'days') 表示将当前日期加一天。使用 format() 方法输出的结果是加一天后的日期和星期几。同样,还可以使用 subtract() 方法对日期进行减操作。 综上所述,momentjs 提供了易于操作日期的各种方法和函数,可以满足开发中对日期的各种需求。在实际开发中,可以根据不同的需求选择合适的方法和函数进行处理。 ### 回答3: Moment.js 是一个 JavaScript 的日期操作工具库,可以方便地对日期和时间进行各种操作、格式化和展示。其中包括对年、月、日、小时、分钟、秒、毫秒等的处理,以及获取星期几等功能。在 Moment.js 中可以使用格式化字符串来格式化日期,比如 "YYYY-MM-DD" 可以表示年、月、日,"dddd" 可以表示星期几。 对于年月日的操作,Moment.js 提供了很多方法。比如可以使用 year() 方法获取年份,使用 month() 方法获取月份,使用 date() 方法获取日期。同时也提供了一些设置方法,可以通过设置 year、month、date 等属性来修改日期。比如: ``` let now = moment(); let year = now.year(); // 获取当前年份 let month = now.month(); // 获取当前月份 let date = now.date(); // 获取当前日期 now.set('year', 2022); // 将日期修改为 2022 年 now.set('month', 3); // 将日期修改为 4 月(注意月份从 0 开始) now.set('date', 15); // 将日期修改为 15 号 ``` 获取星期几需要使用 weekday() 方法,返回值为一个从 0 开始的数字,表示星期几。比如:0 表示星期日,1 表示星期一,以此类推。同时 Moment.js 还提供了一个格式化字符串 "dddd",可以直接获取星期几的文本形式。比如: ``` let now = moment(); let dayOfWeek = now.weekday(); // 获取星期几,返回数字 let weekdayText = now.format('dddd'); // 获取星期几,返回文本 ``` 除了以上介绍的方法,Moment.js 里还有很多其他的操作和功能,可以满足不同场景下的需求。比如计算两个日期之间的差值、将日期转化为 Unix 时间戳等等。总之,Moment.js 是一款非常实用的日期操作工具库,对于前端开发来说,使用它可以大大提高开发效率,减少代码量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值