方法一
Format(time, fmt) {
var o = {
"M+": time.getMonth() + 1, //月份
"d+": time.getDate(), //日
"h+": time.getHours() % 12 == 0 ? 12 : time.getHours() % 12, //小时
"H+": time.getHours(), //小时
"m+": time.getMinutes(), //分
"s+": time.getSeconds(), //秒
S: time.getMilliseconds() //毫秒
};
//周
var week = {
"0": "日",
"1": "一",
"2": "二",
"3": "三",
"4": "四",
"5": "五",
"6": "六"
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
(time.getFullYear() + "").substr(4 - RegExp.$1.length)
);
}
if (/(E+)/.test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
(RegExp.$1.length > 1
? RegExp.$1.length > 2
? "星期"
: "周"
: "") + week[time.getDay() + ""]
);
}
for (var j in o) {
if (new RegExp("(" + j + ")").test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length == 1
? o[j]
: ("00" + o[j]).substr(("" + o[j]).length)
);
}
}
return fmt;
},
Format(nowData,'yyyy-MM-dd') 2021-12-6
Format(nowData,'EEE hh:MM:ss') 星期一 15;14:32
方法二
import moment from 'moment'
mounted() {
this.getNow()
},
methods: {
moment
getNow() {
const mo = moment()
const year = mo.format('yyyy-MM-DD')
const weekNum = mo.format('E')
const time = mo.format('HH:mm:ss')
const cnWeek = ['日', '一', '二', '三', '四', '五', '六']
this.currentDate = `${year} 星期${cnWeek[weekNum]} ${time}`
setTimeout(() => {
this.getNow()
}, 1000)
},
}
currentDat:'', 2021-12-6 星期一 15;14:32
方法三
当前时间
function getCurrentTime() {
var time = new Date()
var y = time.getFullYear()
var m = time.getMonth() + 1
var d = time.getDate()
var h = time.getHours()
var s = time.getMinutes()
var ss = time.getSeconds()
if (m.toString().length < 2) {
m = '0' + m
}
if (d.toString().length < 2) {
d = '0' + d
}
if (h.toString().length < 2) {
h = '0' + h
}
if (s.toString().length < 2) {
s = '0' + s
}
if (ss.toString().length < 2) {
ss = '0' + ss
}
return y + '-' + m + '-' + d + ' ' + h + ':' + s + ':' + ss
}
方法四 将时间戳处理为字符串
export function handleDateToString (time, showHMS) {
if (!time) {
return '--'
} else {
let date
if (time instanceof Date) {
date = time
} else {
date = new Date(time)
}
let year = date.getFullYear()
let month = date.getMonth() + 1
let day = date.getDate()
let hour = date.getHours()
let minute = date.getMinutes()
let second = date.getSeconds()
month = month < 10 ? ('0' + month) : month
day = day < 10 ? ('0' + day) : day
hour = hour === 0 ? '00' : (hour < 10 ? '0' + hour : hour)
minute = minute === 0 ? '00' : (minute < 10 ? '0' + minute : minute)
second = second === 0 ? '00' : (second < 10 ? '0' + second : second)
return year + '-' + month + '-' + day + (showHMS ? ' ' + hour + ':' + minute + ':' + second : '')
}
}
moment.js 方便 快捷 功能全
vue项目中,需要把 moment.js 挂载到全局上(即vue的原型链上),访问时直接使用 this.moment() ;
vue项目中不挂载到全局,单文件(单组件)使用:
import moment from "moment"; //然后直接使用 moment()
1. 初始化日期 / 时间
初始化日期:
moment().format('YYYY-MM-DD');
初始化日期时间:
moment().format('YYYY-MM-DD HH:mm:ss');
2. 格式化日期 / 时间
格式化日期:
moment(value).format('YYYY-MM-DD');
格式化日期时间:
moment(value).format('YYYY-MM-DD HH:mm:ss');
3. 加/减时间
操作之前必须使用 this.moment(日期变量) ;将要操作的日期转为 moment.js 可以处理的日期时间格式
加法: ==>> 当前日期加一个月并输出格式为 'YYYY-MM-DD'
this.moment().add(1, 'months').format('YYYY-MM-DD');
加法: ==>> 指定日期(startDate)加2天并输出格式为 'YYYY-MM-DD'
this.moment(startDate).add(2, 'days').format('YYYY-MM-DD')
减法: ==>> 当前时间减去7天
this.moment().subtract(7, 'days');
加法: ==>> 指定日期(startDate)加减去2天并输出格式为 'YYYY-MM-DD'
this.moment(startDate).subtract(2, 'days').format('YYYY-MM-DD')
4. 获取某年某月的第一天或最后一天
获取某年某月的第一天:
startOf('month')
startOf('year')
moment(日期).startOf('month').format("YYYY-MM-DD")//日期可以是 年月的格式 也可以是年月日的格式
moment(日期).startOf('year').format("YYYY-MM-DD")
获取某年某月的最后一天:
endOf('month')
endOf('year')
moment(日期).endOf('month').format("YYYY-MM-DD")//日期可以是 年月的格式 也可以是年月日的格式
moment(日期).endOf('year').format("YYYY-MM-DD")
一天的00:00:00 23:59:59
moment(日期).startOf('day').format("YYYY-MM-DD HH:mm:ss")
moment(日期).endOf('day').format("YYYY-MM-DD HH:mm:ss")
5. 获取星期几
获取星期几: ==>> 当前日期/指定日期是星期几
this.moment().day() 或 this.moment(startDate).day()
6. 获取毫秒数
获取毫秒数: ==>> 在获取指定时间的毫秒数时,必须要有日期。即startDate包括日期时间
this.moment().day() 或 this.moment(startDate).valueOf()
7. 获取时间差(以毫秒计算)
两个日期/时间的时差: ==>> 开始时间和结束时间的时间差,以“天”为单位;endTime和startTime都是毫秒数
this.moment(endTime).diff(this.moment(startTime),'days' )
开始时间和结束时间的时间差,以“分钟”为单位
注意:计算时间差时,可以以 “years”、“days”、“hours”、“minutes” 以及 "seconds" 为单位输出!
this.moment(endTime).diff(this.moment(startTime), 'minutes')
8. 获取时、分、秒
原理:利用字符串的 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);
9. 将毫秒数转为时分秒
注意:毫秒转为其他单位时,达到你想要转的单位时,为1,超过时不管,不足时为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'); //转为年
10. 判断一个日期是否在两个日期之前 isBetween
语法:
this.moment().isBetween(moment-like, moment-like, String, String);
- 不包含起始这两个日期(只有两个参数) ==>> 中文网只有两个参数
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
- 自定义是否包含起始日期(四个参数,主要是第四个参数) ==>> 英文网才有四个参数 第三个参数,固定为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