moment的使用——简单易懂

本文详细讲解了moment.js库中关于时间格式化、周数与月份的处理方法,包括设置和获取特定格式的日期、调整时间位置以适应指定的周数或月份。从获取当前时间到自定义格式输出,再到日期的灵活转换,是每个开发者必备的日期处理技巧。
摘要由CSDN通过智能技术生成

format

时间格式化,将时间输出入你想要的时间的格式,

format:可以出入年月日日期由你来定义

写法:

moment(不传入默认当前时间).format('时间格式')
moment(传入自己的参数).format('根据需要自己的时间格式')
eg: 
  /**
 * format(时间格式)
 * YYYY-MM-DD 代表年月日
 * eg: moment().format('YYYY-MM-DD') / 2022-05-20
 * MM-DD 代表月日
 * eg: moment().format('MM-DD') // 05-20
 * YYYY-MM 代表年月
 * eg: moment().format('YYYY-MM') // 2022-05
 * YYYY 代表年
 * eg: moment().format('YYYY') // 2022
 * MM 代表月
 * eg: moment().format('MM') // 05
 * DD 代表日
 * eg: moment().format('DD') // 20
 * YYYY-MM-DD HH:mm:ss 代表年月日 时分秒
 * eg: moment().format('YYYY-MM-DD HH:mm:ss') // 2022-05-20 11:27:38
 * YYYY-MM-DD HH:mm 代表年月日 时分
 * eg: moment().format('YYYY-MM-DD HH:mm') // 2022-05-20 11:27
 * YYYY-MM-DD HH 代表年月日 时
 * eg: moment().format('YYYY-MM-DD HH') // 2022-05-20 11
 * HH:mm:ss 代表 时分秒
 * eg: moment().format('HH:mm:ss') // 11:27:38
 * HH:mm 代表 时分
 *  eg: moment().format('HH:mm') // 11:27
 */

3

week

week函数获取所在年的周数或者设置周数(星期数),传入值代表设置,传入值的类型是number类型的数字;不传值代表获取,返回值是number类型的数字

/**
 * 传入moment函数,可选,时间为任意日期,如果不传默认当前时间
 */

week不传入值

/**
 * !!!!!! week函数不传入值,则代表其为获取传入时间在传入时间的年分的第几周
 * eg:
 *    当time = '2022-6-19' moment(time).week() // 26(当年的第26周)
 *    当time = new date() moment(time).week() // 21(当年的第21周) // new Data() === 2022-5-19
 */

week传入值

/**
 *   !!!!!! week函数传入值,则代表设置传入时间在传入时间的年分的星期,保留星期几,分以下三种场景
 *      一、
 *      传入时间在传入时间的年份中的周数小于传入周数,则获取到传入时间的星期数,再设置到传入周数的日期中的星期几,配合下面案例使用
 *      eg:time='2022-4-19',其为星期二,在传入时间的年份中他是第17周  // weekNum=21
 *      17 < 21, 那么let a = moment(time).week(weekNum);
 *      则a的结果就是将传入时间的星期数设置在当年第21周的星期上的时间
 *      即a的结果等于 2022-05-17
 *
 *      二、
 *      传入时间在传入时间的年份中的周数大于传入周数,则获取到传入时间的星期数,再设置到传入周数的日期中的星期几,配合下面案例使用
 *      eg:time='2022-5-19',其为星期四,在传入时间的年份中他是第21周  // weekNum=19
 *      21 > 19,那么let a = moment(time).week(weekNum);
 *      则a的结果就是将传入时间的星期数设置在当年第19周的星期上的时间
 *      即a的结果等于 2022-05-05
 *
 *      三、
 *      传入时间在传入时间的年份中的周数等于传入周数,则获取到传入时间的星期数,再设置到传入周数的日期中的星期几,配合下面案例使用
 *      eg:time=new date() //new date() ===  '2022-5-19',  其为星期四,在传入时间的年份中他是第21周   // weekNum=21
 *      21 === 21,  那么let a = moment(time).week(weekNum);
 *      则a的结果就是返回传入时间
 *      即a的结果等于 2022-5-19
 */

4

month

month函数获取或者设置在传入时间的月份,月份为0到11之间的数字,如果超出这个数字范围则冒泡到年份,2.1.0版本之前如果 moment 更改了月份,且新的月份没有足够的天数来保留该月份的当前日期,则它将会溢出到下个月份,2.1.0版本之后更改为目标月份的末尾。month函数传入数值是number类型数字,代表设置;如果不传入,代表获取,返回值也是number类型的

/**
 * 传入moment函数,可选,时间为任意日期,如果不传默认当前时间
 */

month不传值

/**
 * 月份索引 0-11之间代表 1-12月
 * !!!!!! month函数不传入值,则代表其为获取传入时间在传入时间的年分的月份索引,
 * eg:
 *    当time = '2022-6-20' moment(time).month() // 5(月份索引)(当年的第六个月)
 *    当time = new date() moment(time).month() // 4(月份索引)(当年的第五个月) // new Data() === 2022-5-20
 */

month传值

/**
 *   !!!!!! month函数传入值,则代表设置传入时间在传入时间的年分的月份,分以下三种场景
 *      一、
 *      传入时间在传入时间的年份中的月份索引小于传入月份索引,则获取到传入时间的日期,再设置到传入月份索引的日期,配合下面案例使用
 *      eg:time='2022-5-20',日期为5-20,在传入时间的年份中他的月份索引是4  // num=5
 *      4 < 5, 那么let a = moment(time).month(num);
 *      则a的结果就是将传入时间的日期设置在当年月份索引为5的日期上的时间
 *      即a的结果等于 2022-06-20
 *
 *      二、
 *      传入时间在传入时间的年份中的月份索引大于传入月份索引,则获取到传入时间的日期,再设置到传入月份索引的日期,配合下面案例使用
 *      eg:time='2022-5-20',其日期为5-20,在传入时间的年份中他的月份索引是4  // num=3
 *      4 > 3,那么let a = moment(time).month(num);
 *      则a的结果就是将传入时间的星期数设置在当年月份索引为3的日期上的时间
 *      即a的结果等于 2022-04-20
 *
 *      三、
 *      传入时间在传入时间的年份中的月份索引等于传入月份索引,则获取到传入时间的日期,再设置到传入月份索引的日期,配合下面案例使用
 *      eg:time=new date() //new date() ===  '2022-05-20',  其日期为5-20,在传入时间的年份中他的月份索引是4   // num=4
 *      4 === 4,  那么let a = moment(time).week(num);
 *      则a的结果就是返回传入时间
 *      即a的结果等于 2022-05-20
 */

5

year

year函数获取传入时间的年份或者设置年份,年份是-270000到270000之间number类型的数字,如果其不传值则为获取,返回值是年份,number类型的数字,传值代表设置年份,传入number类型的数字

/**
 * 传入moment函数,可选,时间为任意日期,如果不传默认当前时间
 */

year不传值

/**
 * 
 * !!!!!! year函数不传入值,则代表其为获取传入时间的年分,
 * eg:
 *    当time = '2022-6-20' moment(time).year() // 2022(年分)
 *    当time = new date() moment(time).year() // 2022(年分) // new Data() === 2022-5-20
 */

year传值

/**
 *   !!!!!! year函数传入值,则代表设置年份,分以下三种场景
 *      一、
 *      传入时间的年份小于传入年份,则获取到传入时间的日期,再设置到传入年份的日期,配合下面案例使用
 *      eg:time='2022-5-20',日期为5-20,在传入时间的年份是2022  // num=2023
 *      2022 < 2023, 那么let a = moment(time).year(num);
 *      则a的结果就是将传入时间的日期设置在年份的日期上的时间
 *      即a的结果等于 2023-5-20
 *
 *      二、
 *      传入时间的年份大于传入年份,则获取到传入时间的日期,再设置到传入年份的日期,配合下面案例使用
 *      eg:time='2022-5-20',其日期为5-20,在传入时间的年份是2022  // num=2021
 *      2022 > 2021,那么let a = moment(time).year(num);
 *      则a的结果就是将传入时间的日期设置在传入年份的日期上的时间
 *      即a的结果等于 2021-05-20
 *
 *      三、
 *      传入时间的年份等于传入年份,则获取到传入时间的日期,再设置到传入年份的日期,配合下面案例使用
 *      eg:time=new date() //new date() ===  '2022-05-20',  其日期为5-20,在传入时间的年份是2022   // num=2022
 *      4 === 4,  那么let a = moment(time).year(num);
 *      则a的结果就是返回传入时间
 *      即a的结果等于 2022-05-20
 */

6

quarter

quarter函数获取传入时间的季度或者设置季度,季度为1-4之间的数字,存在于2.6.0以上版本,quarter函数传入数值都是number类型的数字,如果不传入,返回值也是number类型的数字

/**
 * 传入moment函数,可选,时间为任意日期,如果不传默认当前时间
 */

quarter不传值

/**
 * !!!!!! quarter函数不传入值,则代表其为获取传入时间在传入时间的年分的季度,
 * eg:
 *    当time = '2022-6-20' moment(time).quarter() // 2(当年的第2个季度)
 *    当time = new date() moment(time).quarter() // 2(当年的第2个月) // new Data() === 2022-5-20
 */

quarter传值

/**
 *   !!!!!! quarter函数传入值,则代表设置季度,分以下三种场景
 *      一、
 *      传入时间的在当年的季度数小于传入季度数,则获取到传入时间的日期,再设置到传入季度数的日期,配合下面案例使用
 *      eg:time='2022-5-20',日期为5-20,在传入时间的季度是2  // num=3
 *      2 < 3, 那么let a = moment(time).quarter(num);
 *      则a的结果就是将传入时间的日期设置在季度的日期上的时间
 *      即a的结果等于 2022-08-20
 *
 *      二、
 *      传入时间的季度数大于传入季度数,则获取到传入时间的日期,再设置到传入季度数的日期,配合下面案例使用
 *      eg:time='2022-5-20',其日期为5-20,在传入时间的季度数是2  // num=1
 *      2 > 1,那么let a = moment(time).quarter(num);
 *      则a的结果就是将传入时间的日期设置在传入季度的日期上的时间
 *      即a的结果等于 2022-02-20
 *
 *      三、
 *      传入时间的季度数等于传入季度数,则获取到传入时间的日期,再设置到传入季度数的日期,配合下面案例使用
 *      eg:time=new date() //new date() ===  '2022-05-20',  其日期为5-20,在传入时间的季度数是 2   // num=2
 *      4 === 4,  那么let a = moment(time).quarter(num);
 *      则a的结果就是返回传入时间
 *      即a的结果等于 2022-05-20
 */

7

startOf

startOf函数将原始的 moment 设置为时间单位的开头来对其进行更改,startOf的传入值(week,month,day等),设置当前传入值的第一天,必传值,类型为string。

/**
 * moment()如果不传值默认为当前时间 , new Date() === 2022-5-20
 * moment().startOf('year'); // 设置传入时间的当前年的第一天 2022-01-01 00:00:00
 * moment().startOf('month'); // 设置传入时间的当前月的第一天 2022-05-01 00:00:00
 * moment().startOf('day'); // 设置传入时间当天的时间初始时间 2022-05-20 00:00:00
 * moment().startOf('week'); // 设置传入时间当前周的第一天 2022-05-15 00:00:00
 * moment().startOf('quarter'); // 设置传入时间当前季度的第一天 2022-04-01 00:00:00
 */

8

endOf

endOf函数将原始的 moment 设置为时间单位的开头来对其进行更改,end的传入值和startOf的传入值相同,设置当前传入值的最后一天,必传值,类型为string。

/**
 * moment()如果不传值默认为当前时间 , new Date() === 2022-5-20
 * moment().endOf('year'); // 设置传入时间当前年的最后一天 2022-12-31 23:59:59
 * moment().endOf('month'); // 设置传入时间当前月的最后一天 2022-05-31 23:59:59
 * moment().endOf('day'); // 设置传入时间当天的时间结束时间 2022-05-20 23:59:59
 * moment().endOf('week'); // 设置传入时间当前周的最后一天 2022-05-21 23:59:59
 * moment().endOf('quarter'); // 设置传入时间当前季度的最后一天 2022-06-30 23:59:59
 */

9

valueOf

valueOf输出自Unix纪元以来的毫秒数,和date.valueOf一样

console.log(moment().valueOf()) // 毫秒数1653028736149
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值