前段时间公司项目中有很多关于时间格式的问题,很多都是很常见的,所有我把很多格式设置封装成很多方法,以便以后需要的时候直接调用。
1.前端post请求的时候传入的时间参数格式转换方法
function formatDate(date, flag) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var HH24 = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
var Mi = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
var ss = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
m = m < 10 ? '0' + m : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
if(flag) {
return y + '-' + m + '-' + d + 'T00:00:00.0000000+08:00';
} else {
return y + '-' + m + '-' + d + 'T' + HH24 + ':' + Mi + ':' + ss + '.0000000+08:00';
}
};
2.前端get请求传入时间参数格式转换方法
function formatDate1(date, flag) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var HH24 = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
var Mi = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
var ss = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
m = m < 10 ? '0' + m : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
if(flag) {
return y + '-' + m + '-' + d + 'T00%3A00%3A00Z';
} else {
return y + '-' + m + '-' + d + 'T' + HH24 + '%3A' + Mi + '%3A' + ss + 'Z';
}
};
3. 日期格式化,得到你想要的格式
Date.prototype.format = function(format) {
var o = {
"M+": this.getMonth() + 1, //month
"d+": this.getDate(), //day
"h+": this.getHours(), //hour
"m+": this.getMinutes(), //minute
"s+": this.getSeconds(), //second
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter
"S": this.getMilliseconds() //millisecond
}
if(/(y+)/.test(format)) format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("(" + k + ")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
return format;
}
这个方法写在原型上,可以在时间后面直接调用,如new Date().format('MM-dd'),得到的就是只有月和日的日期格式。
4.计算当前时间的前后一段时间的时间点,如两天前、两月后
function getDateTimeByCount(AddCount, type, isZero,date) {
var dd = new Date();
if(date){
dd = date;
}
switch(type) {
case 'hour':
dd.setHours(dd.getHours() + AddCount);
break;
case 'day':
dd.setDate(dd.getDate() + AddCount);
break;
case 'month':
dd.setMonth(dd.getMonth() + AddCount);
break;
case 'year':
dd.setFullYear(dd.getFullYear() + AddCount);
break;
default:
dd.setDate(dd.getDate() + AddCount); //获取AddDayCount天后的日期
}
var y = dd.getFullYear();
var m = dd.getMonth() + 1;
var HH24 = dd.getHours() < 10 ? '0' + dd.getHours() : dd.getHours();
var Mi = dd.getMinutes() < 10 ? '0' + dd.getMinutes() : dd.getMinutes();
var ss = dd.getSeconds() < 10 ? '0' + dd.getSeconds() : dd.getSeconds();
m = m < 10 ? '0' + m : m;
var d = dd.getDate();
d = d < 10 ? ('0' + d) : d;
if(isZero) {
var str = y + '-' + m + '-' + d + ' ' + '00:00:00';
} else {
var str = y + '-' + m + '-' + d + ' ' + HH24 + ':' + Mi + ':' + ss;
}
return str;
}
5.把秒数转换成时分秒
function formatSeconds(value) {
var theTime = parseInt(value); // 秒
var theTime1 = 0; // 分
var theTime2 = 0; // 小时
// alert(theTime);
if(theTime > 60) {
theTime1 = parseInt(theTime / 60);
theTime = parseInt(theTime % 60);
// alert(theTime1+"-"+theTime);
if(theTime1 > 60) {
theTime2 = parseInt(theTime1 / 60);
theTime1 = parseInt(theTime1 % 60);
}
}
var result = "" + parseInt(theTime) + "s";
if(theTime1 > 0) {
result = "" + parseInt(theTime1) + "m" + result;
}
if(theTime2 > 0) {
result = "" + parseInt(theTime2) + "h" + result;
}
return result;
}
6.获取指定时间段内的所有日期
function getTimeAllDate(begin, end) {
var arr = [];
var ab = begin.split("-");
var ae = end.split("-");
var db = new Date();
db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);
var de = new Date();
de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);
var unixDb = db.getTime();
var unixDe = de.getTime();
for (var k = unixDb; k <= unixDe;) {
arr.push((new Date(parseInt(k))).format('MM-dd'));
k = k + 24 * 60 * 60 * 1000;
}
return arr;
}
这个还不算全面,以后有新的需要再补全。