1.将中国标准时间转换成yyyy-xx-nn aa-bb-cc
中国标准时间:
Thu May 12 2019 08:00:00 GMT+0800 (中国标准时间)
var d = new Date('Thu May 12 2019 08:00:00 GMT+0800 (中国标准时间)');
d=d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
1.1日期时间指定格式化
/**
* @param {Date} date 指定日期
* @returns {Number}
* @description 获取指定时间所在月的天数
*/
const getMonthDays = (date) => {
let d = new Date(date.getFullYear(), date.getMonth() + 1, 0);
return d.getDate();
};
/**
* @param {Date} date 指定日期
* @param {String} [sFmt='yyyy-MM-dd HH:mm:ss'] 输出的日期时间格式 默认值为'yyyy-MM-dd HH:mm:ss'
* @returns {String} 格式化后的字符串
* @description 日期时间指定格式化
*/
const formatDate = (date, sFmt) => {
sFmt = sFmt || "yyyy-MM-dd HH:mm:ss";
var aWeekDay = ["日", "一", "二", "三", "四", "五", "六"],
obj = {
y: date.getFullYear(), // 年份,注意必须用getFullYear
M: date.getMonth() + 1, // 月份,注意是从0-11
d: date.getDate(), // 日期
q: Math.floor((date.getMonth() + 3) / 3), // 季度
w: date.getDay(), // 星期,注意是0-6
H: date.getHours(), // 24小时制
h: date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 12小时制
m: date.getMinutes(), // 分钟
s: date.getSeconds(), // 秒
S: date.getMilliseconds(), // 毫秒
};
const replacefun = (m) => {
var val = String(obj[i]);
if (i === "w") return (m.length > 2 ? "星期" : "周") + aWeekDay[val];
val = _.padStart(val, m.length, "0");
return m.length === 1 ? val : val.substring(val.length - m.length);
};
for (var i in obj) {
sFmt = sFmt.replace(new RegExp(i + "+", "g"), replacefun);
}
return sFmt;
};
1.3时间戳转化为时分秒
var toHHmmss = function (data) {
var s = [];
if (data) {
var hours = parseInt(data / (1000 * 60 * 60));
var minutes = parseInt((data - hours * 3600 * 1000) / (1000 * 60));
var seconds = Math.round(
(data - hours * 3600 * 1000 - minutes * 60 * 1000) / 1000
);
// s = (hours < 10 ? ('0' + hours) : hours) + ':' + (minutes < 10 ? ('0' + minutes) : minutes) + ':' + (seconds < 10 ? ('0' + seconds) : seconds);
s.push(hours < 10 ? "0" + hours : hours);
s.push(minutes < 10 ? "0" + minutes : minutes);
s.push(seconds < 10 ? "0" + seconds : seconds);
}
return s;
};
1.3.1时间戳转为天
var toDDHHmmss = function (data) {
let s = [];
if (data) {
let day = 0,
hours = 0,
minutes = 0,
newHouer = 0;
day = parseInt(data / (1000 * 60 * 60 * 24));
hours = parseInt((data - (day * (1000 * 60 * 60 * 24))) / (1000 * 60 * 60));
minutes = parseInt((data - (day * (1000 * 60 * 60 * 24)) - (hours * 1000 * 60 * 60)) / (1000 * 60));
s.push(day < 10 && day != 0 ? "0" + day : day);
if (day == 0) {
s.push(hours < 10 && hours != 0 ? "0" + hours : hours);
} else {
s.push(hours < 10 ? "0" + hours : hours);
}
if (hours == 0) {
s.push(minutes < 10 && minutes != 0 ? "0" + minutes : minutes);
} else {
s.push(minutes < 10 ? "0" + minutes : minutes);
}
}
return s;
};
1.4格式化秒数
/**
*
* @param {Number} sec
* @description 格式化秒数
*/
const formatSec = (sec) => {
let time;
if (!sec) {
time = "00'" + '00"';
} else if (sec < 10) {
time = "00'0" + sec + '"';
} else if (sec >= 10 && sec < 60) {
time = "00'" + sec + '"';
} else {
let rem = sec / 60;
if (Math.floor(rem) !== rem) {
rem = sec - parseInt(sec / 60) * 60;
if (rem < 10) {
time = parseInt(sec / 60) + "'0" + rem + '"';
} else {
time = parseInt(sec / 60) + "'" + rem + '"';
}
} else {
time = parseInt(sec / 60) + "'" + '00"';
}
}
return time;
};
1.5秒数转化成分钟
/**
* @param {Number} sec
* @description 秒数转化成分钟
*/
const formatMin = (sec) => {
let time;
if (sec && sec < 60) {
time = 1;
} else {
let rem = sec / 60;
if (Math.floor(rem) !== rem) {
time = parseInt(rem) + 1;
} else {
time = parseInt(rem);
}
}
return time;
};
1.6计算时间长度
/**
*
* @param {String} 开始时间 09:12:00
* @param {String} 结束时间
* @description 计算时间长度
*/
const timeLength = (start, end) => {
let starts = start.split(":");
let ends = end.split(":");
let startLong =
Number(starts[0]) * 60 * 60 * 1000 +
Number(starts[1]) * 60 * 1000 +
Number(starts[2]) * 1000;
let endLong =
Number(ends[0]) * 60 * 60 * 1000 +
Number(ends[1]) * 60 * 1000 +
Number(ends[2]) * 1000;
let result = endLong - startLong;
return result > 0 ? result : 0;
};
2.将yyyy-xx-nn aa-bb-cc转换成中国标准时间
var s=new Date(stime).getTime();
var d=new Date(etime).getTime();
3.如果遇到解析毫秒时间的时候,出现2020-7-8 11-7 可以使用分开解析 也可以使用string.prototype.padStart,把指定字符串填充到字符串头部,返回新字符串。
let d = new Date(item[0].create_time);//这个是你需要解析的时间
let year = d.getFullYear().toString();
let month = (d.getMonth()+1).toString();
let day = (d.getDate()).toString();
let hour = (d.getHours()).toString();
let min = (d.getMinutes()).toString();
let second = (d.getSeconds()).toString();
if (year.length<=1){
year='0'+year;
}
//月份为一位:
方法一:判断加0
if (month.length<=1){
month='0'+month;
}
//方法二:使用padStart()
month =month.toString().padStart(2, '0'); //两位,如果是一位,前面填充0.如果是两位输出原字符串
//同理后面的也可以这样处理
if (day.length<=1){
day='0'+day;
}
if (hour.length<=1){
hour='0'+hour;
}
if (min.length<=1){
min='0'+min;
}
if (second.length<=1){
second='0'+second;
}
d = year+'-'+month+'-'+day+' '+hour+':'+min+':'+second;
4.标准时间转换成毫秒数
demo:
将Sat Nov 07 2020 16:52:13 GMT+0800 (中国标准时间)转成1604739133000
1.将转换的方法封装出来
dateToMs (date) {
let result = new Date(date).getTime();
return result;
},
2.调用该方法
console.log(this.dateToMs(demoTime))
5.将毫秒数转换成yyyy-xx-mm
1.关于时间转换的两个方法
getMyDate(str) {
let oDate = new Date(str),
oYear = oDate.getFullYear(),
oMonth = oDate.getMonth() + 1,
oDay = oDate.getDate(),
oHour = oDate.getHours(),
oMin = oDate.getMinutes(),
oSen = oDate.getSeconds(),
oTime = oYear + '-' + this.addZero(oMonth) + '-' + this.addZero(oDay) + ' ' + this.addZero(oHour) + ':' +
this.addZero(oMin) + ':' + this.addZero(oSen);
return oTime;
},
addZero(num) {
if (parseInt(num) < 10) {
num = '0' + num;
}
return num;
},
2.调用该方法就可以转换成 2020-11-07 18:55:13
6、2021-01-11T09:49:43.000+0000转yyyy-mm-mm aa-bb-cc
renderTime(date) {
var dateee = new Date(date).toJSON();
return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')
},
7.获取当前时间
moment().format('YYYY-MM-DD HH:mm:ss');
打印结果:
“2021-05-17 13:08:46”
8.获取周几
moment().format('d');
打印结果:
“1”
9.获取从某一年开始计算到指定日期值的周数
/**
* @param {Date} date 指定日期
* @param {Number} nYear 开始计算的年份,默认为当前日期值所在年份
* @param {Number} nWeekStart 每周开始为周几,默认为周一
* @returns {Number} 总周数
* @description 获取从某一年开始计算到指定日期值的周数
*/
const getWeekFromYear = (date, nYear, nWeekStart) => {
nWeekStart = (nWeekStart || 1) - 0;
if (isNaN(nWeekStart) || nWeekStart > 6) nWeekStart = 1;
if (!nYear) {
nYear = date.getFullYear();
}
let dFirstDay = new Date(nYear, 0, 1);
let nFirstWeekDays = 7 - dFirstDay.getDay() + nWeekStart;
let nDayOfYear =
(new Date(date.getFullYear(), date.getMonth(), date.getDate()) -
dFirstDay) /
(24 * 3600 * 1000) +
1;
return Math.ceil((nDayOfYear - nFirstWeekDays) / 7) + 1;
};
10.获取指定日期在本月的周数
/**
*
* @param {Date} date 指定日期
* @param {Number} nWeekStart 每周开始为周几,默认为周一, 可选值1到7
* @returns {Number} 总周数
* @description 获取指定日期在本月的周数
*/
const getWeekFromMonth = (date, nWeekStart) => {
nWeekStart = (nWeekStart || 1) % 7;
if (isNaN(nWeekStart) || nWeekStart > 7) nWeekStart = 1;
let dFirstDay = new Date(date.getFullYear(), date.getMonth(), 1);
let nFirstWeekDays = 7 - dFirstDay.getDay() + nWeekStart;
let nDayOfYear =
(new Date(date.getFullYear(), date.getMonth(), date.getDate()) -
dFirstDay) /
(24 * 3600 * 1000) +
1;
return Math.ceil((nDayOfYear - nFirstWeekDays) / 7) + 1;
};