如何管理时间,moment.js插件来教你

moment.js官网

一.使用

相对时间

    console.log(moment("20101124", "YYYYMMDD").fromNow()); // 10年前
    console.log(moment("20151124", "YYYYMMDD").fromNow()); // 5年前
	console.log(moment().startOf('day').fromNow()); // 20小时前
	console.log(moment().endOf('day').fromNow()); // 4小时内
	console.log(moment().startOf('hour').fromNow()); // 51分钟前

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201124194955850.png#pic_center
日历时间

        console.log(moment().subtract(10, 'days').calendar());
        console.log(moment().subtract(6, 'days').calendar());
        console.log(moment().subtract(3, 'days').calendar());
        console.log(moment().subtract(1, 'days').calendar());
        console.log(moment().calendar());
        console.log(moment().add(1, 'days').calendar());
        console.log(moment().add(3, 'days').calendar());
        console.log(moment().add(10, 'days').calendar());;

在这里插入图片描述
常见操作

  1. 初始化日期 / 时间

初始化日期:moment().format(‘YYYY-MM-DD’);

初始化日期时间:moment().format(‘YYYY-MM-DD HH:mm:ss’);

  1. 格式化日期 / 时间

格式化日期:moment(value).format(‘YYYY-MM-DD’);

格式化日期时间:moment(value).format(‘YYYY-MM-DD HH:mm:ss’);

  1. 加/减 ==>> 操作之前必须使用 this.moment(日期变量) ;将要操作的日期转为 moment.js 可以处理的日期时间格式

加法:this.moment().add(1, ‘months’).format(‘YYYY-MM-DD’); ==>> 当前日期加一个月并输出格式为 ‘YYYY-MM-DD’

加法:this.moment(startDate).add(2, ‘days’).format(‘YYYY-MM-DD’) ==>> 指定日期(startDate)加2天并输出格式 为 ‘YYYY-MM-DD’

减法: this.moment().subtract(7, ‘days’); ==>> 当前时间减去7天

加法:this.moment(startDate).subtract(2, ‘days’).format(‘YYYY-MM-DD’) ==>> 指定日期(startDate)加减去2天并输出格式 为 ‘YYYY-MM-DD’

  1. 获取星期几

获取星期几: this.moment().day() 或 this.moment(startDate).day() ==>> 当前日期/指定日期 是星期几

  1. 获取毫秒数

     获取毫秒数:this.moment().day()  或  this.moment(startDate).valueOf()   
    
     ==>> 在获取指定时间的毫秒数时,必须要有日期。即startDate包括日期时间
    
  2. 获取时间差(以毫秒计算)

    两个日期/时间的时差:this.moment(endTime).diff(this.moment(startTime),‘days’ )

    ==>> 开始时间和结束时间的时间差,以“天”为单位;endTime和startTime都是毫秒数

    this.moment(endTime).diff(this.moment(startTime), ‘minutes’)

    ==>> 开始时间和结束时间的时间差,以“分钟”为单位

    ==>> 注意:计算时间差时,可以以 “years”、“days”、“hours”、“minutes” 以及 “seconds” 为单位输出!

  3. 两个具体的日期之差(天数,也可以是年) 在这里插入图片描述

  4. 获取时、分、秒

原理:利用字符串的 split 方法拆分时分秒,然后分别用moment的 hour、minute 和 second 方法;带有日期的可以用 .valueof() 方法。

const fixStart = '08:00:00'
 
const getHour = this.moment().hour(Number(fixStart.split(':')[0]));
const getMinute = this.moment().minute(Number(fixStart.split(':')[1]));
const getSecond = this.moment().second(Number(fixStart.split(':')[2]));
            
// 描述为0,直接写出second(0)
const getHour_Minute_Second = this.moment().hour(Number(fixStart.split(':')[0])).minute(Number(fixStart.split(':')[1])).second(0);       
 
console.log('=====输出',getHour,getMinute,getSecond,getHour_Minute_Second);

得到的结果都是moment.js 自身的时间格式。可以用 format 转换为自己想要的格式,也可以用 diff 方法做时间差的计算
在这里插入图片描述
9. 将毫秒数转为时分秒

注意:毫秒转为其他单位时,达到你想要转的单位时,为1,超过时不管,不足时为0;

       如4800000(80分钟),转为天:0

                                               转为小时:1

                                               转为分钟:20

                                               转为秒:0
const msTime = 4800000;        //80分钟
 
moment.duration(msTime).hours();       //转为小时,值为1
moment.duration(msTime).minutes();     //转为分钟,值为20
moment.duration(msTime).seconds();     //转为秒,值为0

转为其他单位:

moment.duration(msTime, 'seconds');        //转为秒
moment.duration(msTime, 'minutes');        //转为分
moment.duration(msTime, 'hours');          //转为小时
moment.duration(msTime, 'days');           //转为天
moment.duration(msTime, 'weeks');          //转为周
moment.duration(msTime, 'months');         //转为月
moment.duration(msTime, 'years');          //转为年

对应的显示格式:

KeyShorthand
yearsy
monthsm
weeksw
daysd
hoursh
minutesm
secondss
millisecondsms
  1. 判断一个日期是否在两个日期之前 isBetween

语法: this.moment().isBetween(moment-like, moment-like, String, String);

a. 不包含起始这两个日期(只有两个参数) ==>> 中文网只有两个参数

this.moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
this.moment('2010-10-19').isBetween('2010-10-19', '2010-10-25'); // false
this.moment('2010-10-25').isBetween('2010-10-19', '2010-10-25'); // false

b. 自定义是否包含起始日期(四个参数,主要是第四个参数) ==>> 英文网才有四个参数

    第三个参数,固定为null;

    第四个参数,字符串,( ) 表示不包含,[ ] 表示包含。右括号制开始日期,右括号控制结束日期
this.moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '()'); //false
this.moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '[)'); //true
this.moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '()'); //false
this.moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '(]'); //true
this.moment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true

补充:

1.获取当前日期
 
moment(new Date()).add('year',0).format("YYYY-MM-DD")  //如:2018-09-06
 
2.获取本年上个月的第一天和最后一天
 
 var start= moment().add('year',0).month(moment().month() - 1).startOf('month').format("YYYY-MM-DD");
 
var end = moment().add('year',0).month(moment().month() - 1).endOf('month').format("YYYY-MM-DD");
 
如: 2018-08-01   2018-08-31
 
3.获取某月的第一天和最后一天
startDate= moment("2019-11").startOf("month").format("YYYY-MM-DD"),
endDate= moment("2019-11").endOf("month").format("YYYY-MM-DD")
 
输出:"2019-11-01" "2019-11-31"
 
 
4.获取当天日期 时间详情
moment().format('MMMM Do YYYY, h:mm:ss a')   
 //September 6th 2018, 4:13:00 pm  ===》 9月 6天 2018  4:13:00 下午
 
5.获取当天星期几
moment().format('dddd');                    // 星期四
 
6.获取当天日期
moment().format("MMM Do YYYY");               // 9月 6日 2018
 
7.获取某天的 前一天,前2moment("2019-11-31").subtract(1, "days").format("YYYY-MM-DD") 
moment("2019-11-31").subtract(2, "days").format("YYYY-MM-DD")
 
输出:"2019-11-30" "2019-11-29"
 
8.算出某天是属于星期几
moment("2019-12-20").format("dddd")
 
输出:Friday( 要有hooks.locale("zh-cn") 则输出星期五
 
 

二.js设置时间日期

1.获取月份的第一天和最后一天 getDays(timeDetail) 天数

var cxrq00 = '201810';
	var timeDetail = new Date(cxrq00.substring(0, 4) + '-' + cxrq00.substring(4,6));
	var cfsj_start = cxrq00 + '01';
	var days = getDays(timeDetail) + '';
	var cfsj_end = cxrq00 + days;
	console.log(cfsj_start,cfsj_end) //20181001 20181031
	
	
	var cxrq00 = '2018-10';
	var timeDetail = new Date(cxrq00 );
	cxrq00 = cxrq00.replace(/-/, '');
	var cfsj_start = cxrq00 + '01';
	var days = getDays(timeDetail) + '';
	var cfsj_end = cxrq00 + days;
	console.log(cfsj_start,cfsj_end) //20181001 20181031
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值