js时间moment工具类

//安装: npm install moment --save
import moment from 'moment';

/**
 * 转换为指定格式的字符串
 * @param dateStr 时间字符串 2023-04-08T13:14:47.000+00:00
 * @param formatt 'YYYY-MM-DD HH:mm:ss'
 * @returns 
 */
export const getDateFormatt = (dateStr: string, formatt: string) => {
    // console.log(moment(dateStr).format(formatt));
    return moment(dateStr).format(formatt)
}
/**
 * 
 * @param dateStr 时间字符串 2020-08-25 10:23:59
 * @param type 
 *      获取年份1,
 *      获取月份2, 注意:(0:一月份  11: 12月份 )
 *      获取一个月的某一天3,
 *      获取小时4,
 *      获取分钟5,
 *      获取秒数6,
 *      获取今天星期几7 注意:(0是周日)
 * @returns 
 */
export const getNum = (dateStr: string, type: number) => {
    const m = moment(dateStr)
    switch (type) {
        case 1:
            //获取年份
            // m.get('year');
            return m.year();
        case 2:
            //获取月份(0:一月份  11: 12月份 )
            // m.get('month');
            return m.month();       
        case 3:
            //获取一个月的某一天
            // m.get('date');
            return m.date();
        case 4:
            //获取小时
            //  m.get('hours');
            return m.hours();
        case 5:
            //获取分钟
            // m.get('minutes');
            return m.minutes();
        case 6:
            //获取秒数
            // m.get('seconds');
            return m.seconds();
        case 7:
            //获取 今天星期几 
            //m.format('dddd'); //英文方式 Tuesday
            return m.format('d');//数字 2  
    }
    return null;
}

/*

4.时间计算代码如下(示例):
subtract为减法 calendar为new Date()返回
moment().subtract(10, 'days').calendar(); // 2022/08/29
moment().subtract(6, 'days').calendar(); // 上星期五16:16
moment().subtract(3, 'days').calendar(); // 上星期一16:16
moment().subtract(1, 'days').calendar(); // 昨天16:16
moment().calendar(); // 今天16:16
add为加法 format为字符串返回
moment().add(1, 'days').calendar(); // 明天16:16
moment().add(3, 'days').calendar(); // 下星期日16:16
moment().add(10, 'days').calendar(); // 2022/09/18
moment().add(1, 'days').format('YYYY-MM-DD HH:mm:ss');       //后一天:2020-08-26 10:51:48
moment().add(3, 'days').format('YYYY-MM-DD HH:mm:ss');       //2020-08-28 10:51:48
moment().add(10, 'days').format('YYYY-MM-DD HH:mm:ss');      //2020-09-04 10:51:48
moment().add(1, 'year').format('YYYY-MM-DD HH:mm:ss');       //后一年:
moment().subtract(1, 'hours').format('YYYY-MM-DD HH:mm:ss');  //前一小时:
moment().add(1, 'hours').format('YYYY-MM-DD HH:mm:ss');       //后一小时:

5.多语言支持
代码如下(示例):
moment.locale(); // zh-cn
moment().format('LT'); // 16:16 
moment().format('LTS'); // 16:16:17 
moment().format('L'); // 2022/09/08 
moment().format('l'); // 2022/9/8 
moment().format('LL'); // 2022年9月8日 
moment().format('ll'); // 2022年9月8日 
moment().format('LLL'); // 2022年9月8日下午4点16分 
moment().format('lll'); // 2022年9月8日 16:16 
moment().format('LLLL'); // 2022年9月8日星期四下午4点16分 
moment().format('llll'); // 2022年9月8日星期四 16:16

6.求时间差:两个时间now_time和start_time
now_time.diff(start_time,"hour");      //小时数
now_time.diff(start_time,"minute");    //分钟数
now_time.diff(start_time,"second");    //现在和初始时间相差的秒数
now_time.diff(start_time, 'months');   //月数
now_time.diff(start_time, 'weeks');    //周数
now_time.diff(start_time, 'days');     //天数

7. startOf 设置为起始时间 ,都是以当前时间为开始或结束时间来计算,不如diff方式
moment("20111031", "YYYYMMDD").fromNow();    //9 years ago 到现在相差9年
moment().startOf('day').fromNow();           //11 hours ago
moment().startOf('hour').fromNow();          //an hour ago
endOf设置结束时间
moment().endOf('day').fromNow();             //in 13 hours
moment().endOf('hour').fromNow();            //in 15 minutes
//设置为起始时间年初
moment().startOf('year').format('YYYY-MM-DD HH:mm:ss');   //2020-01-01 00:00:00
//设置为起始时间月初
moment().startOf('month').format('YYYY-MM-DD HH:mm:ss');  //2020-08-01 00:00:00
//设置为起始时间日初
moment().startOf('day').format('YYYY-MM-DD HH:mm:ss');    //2020-08-25 00:00:00
//设置为起始时间周初  本周第一天(周日)初
moment().startOf('week').format('YYYY-MM-DD HH:mm:ss');   //2020-08-23 00:00:00
//设置为起始时间,本周(周一)初
moment().startOf('isoWeek').format('YYYY-MM-DD HH:mm:ss');  //2020-08-24 00:00:00

8.时间查询
//查询当前年份是否为闰年
moment([2009]).isLeapYear(); //false
//检查一个时间是否在另一个时间之前(精确到秒比较)
moment('2009-11-26 06:01:27').isBefore('2009-11-26 06:01:28'); //true
//检查一个时间是否在另一个时间之前(精确到年比较)
moment('2009-11-26 06:01:27').isBefore('2009-11-26 06:01:28', 'year'); //false
//检查一个时间是否在另一个时间之后
moment('2009-11-26').isAfter('2020-11-26', 'year'); //false
//检查一个时间是否在其他两个时间之间
moment('2016-11-26').isBetween('2009-11-26', '2020-11-26'); //true
//获取当月的天数
moment('2009-11', 'YYYY-MM').daysInMonth(); //30
//获取当前 moment 年份的周数
moment().weeksInYear(); //52

9.时长创建
//要创建时长,调用 moment.duration(),默认以毫秒为单位。
//创建时长1500毫秒
moment.duration(1500);
//获取时长的毫秒数(返回 0 至 999 之间的数字)
moment.duration(1500).milliseconds(); //500
//获取时长的秒数(返回 0 至 59 之间的数字)
moment.duration(1500).seconds(); //1
//获取时长的长度(以秒为单位)
moment.duration(1500).asSeconds(); //1.5
//以秒为单位创建时长
moment.duration(2, 'seconds');
//以年为单位创建时长
moment.duration(2, 'years');

10.日历时间显示
//moment().calendar(referenceTime, formats);
//moment#calendar 会根据日期与 referenceTime 的日期(默认为今天)的接近程度,使用不同的字符串格式化日期
moment().calendar(); //Today at 3:35 PM
moment().calendar(null, {
    sameDay: '[今天]',
    nextDay: '[明天]',
    nextWeek: 'dddd',
    lastDay: '[昨天]',
    lastWeek: '[上个] dddd',
    sameElse: 'DD/MM/YYYY'
}); //今天

moment().calendar('2020-03-25', {
    sameDay: '[今天]',
    nextDay: '[明天]',
    nextWeek: 'dddd',
    lastDay: '[昨天]',
    lastWeek: '[上个] dddd',
    sameElse: 'DD/MM/YYYY'
}); //昨天

moment().calendar(null, {
  sameDay: function (now) {
    if (this.isBefore(now)) {
      return '[今天将会发生]';
    } else {
      return '[今天已发生]';
    }
  }
}); //今天已发生

*/

你可能感兴趣的:(javascript,开发语言,ecmascript)