//安装: 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 '[今天已发生]';
}
}
}); //今天已发生
*/