moment的使用

在这里插入图片描述

增加或减去天或者月

将某个日期往前退N个月,然后减一天。

let date = moment(item.expireTime).add(distance, 'month').subtract(1, 'day').calendar();
let formatDate = moment(date).format('YYYY-MM-DD');

item.changeExpireTime2 = formatDate;

上面这种方式是有问题的:特定的某个日期,eg:2021-08-14,在add(-11)的时候,calendar方法有问题!

let date = moment('2021-08-14').add(-11, 'month').subtract(1, 'day').calendar(); // 
let formatDate = moment(date).format('YYYY-MM-DD'); // invalid Date

解决:

let formatDate = moment(item.expireTime).add(distance, 'month').format('YYYY-MM-DD');

不要使用calendar的方法了,直接就format它。

var a = moment().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss')
var b = moment().add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
console.log('当前日期的前一天和后一天:', a, b)
console.log(moment().add(7, 'days').add(1, 'months').format('YYYY-MM-DD'))
// 当前日期(2023-07-25)的前一天和后一天: 2023-07-24 09:45:09 2023-07-26 09:45:09

场景:获取过去7天、过去30天、过去12个月、过去24小时等等:

moment().subtract(7, 'day').format('YYYY-MM-DD')
moment().subtract(30, 'day').format('YYYY-MM-DD')
moment().subtract(12, 'month').format('YYYY-MM')
moment().subtract(24, 'hour').format('YYYY-MM-DD HH')

循环遍历,然后push到list里即可。

let monthList = []
for (let i = 0; i < 12; i++) {
  monthList.push(moment().subtract(11 - i, 'months').format('YYYY-MM'))
}
console.log('月份list:', monthList)
/***
 * 获取近N天/月/时 的 list
 * @param num;近几天/时/月
 * @param dateType;day:天;hour:时;month月;
 * @returns {*[]},例如:默认:['2023年07月18日', '2023年07月19日', '2023年07月20日', '2023年07月21日', '2023年07月22日', '2023年07月23日', '2023年07月24日']
 */

export const getRecentDate = (num=7,dateType='day')=>{
  let list = []
  let format = 'YYYY年MM月DD日'
  if(dateType == 'year'){
    format = 'YYYY年'
  }else if(dateType == 'month'){
    format = 'YYYY年MM月'
  }else if(dateType == 'day'){
    format = 'YYYY年MM月DD日'
  }else if(dateType == 'hour'){
    format = 'YYYY年MM月DD日 HH时'
  }
  for (let i = 0;i<num;i++){
    list.push(moment().subtract(num-i-1,dateType).format(format))
  }

  return list
}

计算两个日期的差值

// 天数
moment(endCreateTime).diff(moment(startCreateTime), 'days')
// 也可以是月份或者年

获取当前时间

/*2023年7月25日09:46:21*/
console.log('moment-当前小时:', moment().hours()) // 9
console.log('moment-当前天:', moment().date()) // 25
console.log('moment-当前星期几:', moment().day()) // 2
console.log('moment-当前星期几:', moment().days()) // 2
console.log('moment-当前月份+1:', moment().month()) // 6
console.log('moment-当前年:', moment().year()) // 2023

// get或者set方法
console.log('获取年份:', moment().get('years')) // 2023
console.log('获取日期:', moment().get('date')) // 25

获取当前第几x

/*2023年7月25日09:46:21*/
console.log('moment-当年第几天:', moment().dayOfYear()) // 206
console.log('moment-当年第几周:', moment().week()) // 30
console.log('moment-当年有多少周:', moment().weeksInYear()) // 52
console.log('moment-当年第几月+1:', moment().month()) // 6

起止时间

console.log('今天起始时间:',moment().startOf('day').format('YYYY-MM-DD HH:mm:ss')) // 2023-07-25 00:00:00
console.log('当前小时起始时间:',moment().startOf('hour').format('YYYY-MM-DD HH:mm:ss')) //  2023-07-25 09:00:00
console.log('当前月起始时间:',moment().startOf('month').format('YYYY-MM-DD HH:mm:ss')) //  2023-07-01 00:00:00
console.log('当前年起始时间:',moment().startOf('year').format('YYYY-MM-DD HH:mm:ss')) //  2023-01-01 00:00:00

console.log('今天结束时间:',moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')) //  2023-07-25 23:59:59
console.log('当前小时结束时间:',moment().endOf('hour').format('YYYY-MM-DD HH:mm:ss')) //  2023-07-25 09:59:59
console.log('当前月结束时间:',moment().endOf('month').format('YYYY-MM-DD HH:mm:ss')) //  2023-07-31 23:59:59
console.log('当前年结束时间:',moment().endOf('year').format('YYYY-MM-DD HH:mm:ss')) //   2023-12-31 23:59:59

多久之前

// en
// 自己配置汉字
/*moment.updateLocale('zh-cn', {
  relativeTime: {
    future: 'in %s',
    past: '%s前',
    s: '几秒钟',
    ss: '%d秒',
    m: '一分钟',
    mm: '%d分钟',
    h: '一小时',
    hh: '%d小时',
    d: '一天',
    dd: '%d天',
    w: '一周',
    ww: '%d周',
    M: '一月',
    MM: '%d月',
    y: '一年',
    yy: '%d年'
  }
})*/

// 直接汉化
moment.locale('zh-cn')
console.log('过去时间:',moment().fromNow())
console.log('过去时间:',moment(new Date().getTime()-30*1000).fromNow()) // 几秒钟前
console.log('过去时间:',moment(new Date().getTime()-55*1000).fromNow()) // 一分钟前
console.log('过去时间:',moment(new Date().getTime()-3*60*1000).fromNow()) // 3分钟前
console.log('过去时间:',moment(new Date().getTime()-65*60*1000).fromNow()) // 一小时前
console.log('过去时间:',moment(new Date().getTime()-3*24*60*60*1000).fromNow()) // 3天前
console.log('过去时间:',moment(new Date().getTime()-53*24*60*60*1000).fromNow()) // 2月前
console.log('过去时间:',moment(new Date().getTime()-30*1000).fromNow(true)) // 几秒钟

其他

https://github.com/moment/moment/tree/develop/locale
汉化:https://blog.csdn.net/it_cgq/article/details/79942745

汉化:https://www.jianshu.com/p/5715f4bad95c

常用方法:https://www.jianshu.com/p/9c10543420de

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值