经常要对时间进行转换,就总结了下方法。
以前实际上也总结了,就是不全。这次研究了下moment.写点常用需求记录下
一、自定义组合年月日,时分秒
//格式化时间
formatTime(i){
let date1=new Date(i);
let day = date1.getDate(); //获取年
let month = date1.getMonth()+1; //获取月
let year = date1.getFullYear(); //获取日
let hour = time.getHours(); //获取时
let minutes = time.getMinutes(); //获取分
let seconds = time.getSeconds(); //获取秒
let a=year+'-'+month+'-'+day;
console.log(a)
return a
},
time(val){
const newDate = new Date(val);
const Year = newDate.getFullYear();
const Month = (newDate.getMonth() + 1 + "").padStart(2, "0"); //padStart() 字符串不够长 从头部补齐指定的字符串 padEnd() 尾部补齐
const Day = (newDate.getDate() + "").padStart(2, "0");
const Hours = (newDate.getHours() + "").padStart(2, "0");
const Minutes = (newDate.getMinutes() + "").padStart(2, "0");
const Seconds = (newDate.getSeconds() + "").padStart(2, "0");
return Year+'-'+Month+'-'+Day+' ' + Hours+':'+Minutes+':'+Seconds
},
二、获取当月的天数。
let b=moment("2022-07-15", "YYYY-MM").daysInMonth() // 31
console.log(b);
三、格式化时间为年月日,时分秒
let c= moment(val).format('YYYY-MM-DD HH:mm:ss')
console.log(b);
四、需要上午,下午的时间格式化
转义字符
要转义格式字符串中的字符,可以将字符括在方括号中。
const newDate = new Date();
let a= moment(newDate).format("LLL");
console.log(a); //2022年7月15日下午5点31分
五、js去除时间的时分秒
//去除时间的时分秒
timeFormat(date){
if(date==undefined){
return ''
}else{
let newDate=/\d{4}-\d{1,2}-\d{1,2}/g.exec(date)
// console.log(newDate)
return newDate[0]
}
},
六、计算开始日期到结束日期,中间相差多少天
https://moment.nodejs.cn/docs/#/get-set/
//开始日期到结束日期,中间相差多少天
let a= moment(this.endDate).diff(moment(this.beginDate), 'days')
diff前面是结束时间,后面是开始时间
//某一天到今天,中间相差多少天
let time=new Date()
let b= moment(this.endDate).diff(moment(time), 'days')
//您还可以使用持续时间moment#diff来获取两个时刻之间的持续时间。
//为此,只需将moment#diff方法传入moment#duration如下:
var x = new moment()
var y = new moment()
var duration = moment.duration(x.diff(y))
要获得两个 moment 之间差异的持续时间,你可以将 diff 作为参数传递给 moment#duration。 有关详细信息,请参阅 moment#duration 上的文档。
支持的测量是 years、months、weeks、days、hours、minutes 和 seconds。 为了便于开发,从 2.0.0 开始支持单数形式。 1.1.1 版本提供毫秒以外的测量单位。
默认情况下,moment#diff 会将结果截断为零位小数,返回一个整数。 如果你想要一个浮点数,传递 true 作为第三个参数。 在 2.0.0 之前,moment#diff 返回一个四舍五入到最接近的整数的数字,而不是截断的数字。
七、是否是闰年
moment().isLeapYear();
//如果该年是闰年,则返回true,否则返回false。
moment([2000]).isLeapYear() // true
八、某个时间以前(以后)多少天
添加这段时间在2022-08-09
//当前时间10天以前
let b=moment().subtract(10, 'days').calendar(); // 2022/07/30
let b1=moment().subtract(10, 'days').format('YYYY-MM-DD');// 2022-07-30
//当前时间10天以后
let b=moment().add(10, 'days').calendar(); // 2022/08/19
let b1=moment().add(10, 'days').format('YYYY-MM-DD');// 2022-08-19
//2022-06-10 5天以后,5天以前
let b=moment('2022-06-10').add(5, 'days').calendar(); // 2022/06/15
let b1=moment('2022-06-10').subtract(5, 'days').format('YYYY-MM-DD');// 2022-06-05
九、一些其他时间格式化
1、直接获取当天时间
let b=moment().calendar(); // 今天13:55
2、获取当前是星期几
let b2= moment().format('dddd'); //星期二