jQuery 時間格式化、獲取多少天后的日期、獲取周幾、正則表達式判斷在和多時候我們在獲取到數據之後需要格式化之後顯示在頁面上,下面給大家分享一些關係封裝好的方法來處理時間。
1:時間格式化
// 對Date的擴展,將 Date 轉化爲指定格式的String
// 月(M)、日(d)、小時(h)、分(m)、秒(s)、季度(q) 可以用 1-2 個佔位符,
// 年(y)可以用 1-4 個佔位符,毫秒(S)只能用 1 個佔位符(是 1-3 位的數字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小時
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
};
調用方式:new Date().Format("yyyy-MM-dd") 或者你的時間 new Date("2020-03-15 15:20:38").Format("yyyy-MM-dd")。需要注意一點的是蘋果瀏覽器是/的時間格式,所以要特別處理一下。要把你的時間格式替換一下
比如 new Date(("2020-03-15 15:20:38").replace(/-/g,"/"))替換的效果如下
2:獲取周幾
//獲取周幾
function weekDay(obj){
var weekDay = ["週日", "週一", "週二", "週三", "週四", "週五", "週六"];
var weekDay1 = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
var myDate = new Date(Date.parse(obj.replace(/-/g, "/")));
var week = weekDay1[myDate.getDay()];
return week;
}
調用方式 :weekDay("2020-04-01")有的就要問了,如果我的是一個時間戳啦,那就先需要你把時間戳轉換爲時間格式啦。下面就會有對時間戳轉換爲時間的方法
3:時間戳轉換爲時間格式化
/**
* 時間戳格式化函數
* @param {string} format 格式
* @param {int} timestamp 要格式化的時間 默認爲當前時間
* @return {string} 格式化的時間字符串
*/
function date(format, timestamp){
var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date());
var pad = function(n, c){
if((n = n + "").length < c){
return new Array(++c - n.length).join("0") + n;
} else {
return n;
}
};
var txt_weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var txt_ordin = {1:"st", 2:"nd", 3:"rd", 21:"st", 22:"nd", 23:"rd", 31:"st"};
var txt_months = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var f = {
// Day
d: function(){return pad(f.j(), 2)},
D: function(){return f.l().substr(0,3)},
j: function(){return jsdate.getDate()},
l: function(){return txt_weekdays[f.w()]},
N: function(){return f.w() + 1},
S: function(){return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th'},
w: function(){return jsdate.getDay()},
z: function(){return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0},
// Week
W: function(){
var a = f.z(), b = 364 + f.L() - a;
var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1;
if(b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){
return 1;
} else{
if(a <= 2 && nd >= 4 && a >= (6 - nd)){
nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31");
return date("W", Math.round(nd2.getTime()/1000));
} else{
return (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);
}
}
},
// Month
F: function(){return txt_months[f.n()]},
m: function(){return pad(f.n(), 2)},
M: function(){return f.F().substr(0,3)},
n: function(){return jsdate.getMonth() + 1},
t: function(){
var n;
if( (n = jsdate.getMonth() + 1) == 2 ){
return 28 + f.L();
} else{
if( n & 1 && n < 8 || !(n & 1) && n > 7 ){
return 31;
} else{
return 30;
}
}
},
// Year
L: function(){var y = f.Y();return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0},
//o not supported yet
Y: function(){return jsdate.getFullYear()},
y: function(){return (jsdate.getFullYear() + "").slice(2)},
// Time
a: function(){return jsdate.getHours() > 11 ? "pm" : "am"},
A: function(){return f.a().toUpperCase()},
B: function(){
// peter paul koch:
var off = (jsdate.getTimezoneOffset() + 60)*60;
var theSeconds = (jsdate.getHours() * 3600) + (jsdate.getMinutes() * 60) + jsdate.getSeconds() + off;
var beat = Math.floor(theSeconds/86.4);
if (beat > 1000) beat -= 1000;
if (beat < 0) beat += 1000;
if ((String(beat)).length == 1) beat = "00"+beat;
if ((String(beat)).length == 2) beat = "0"+beat;
return beat;
},
g: function(){return jsdate.getHours() % 12 || 12},
G: function(){return jsdate.getHours()},
h: function(){return pad(f.g(), 2)},
H: function(){return pad(jsdate.getHours(), 2)},
i: function(){return pad(jsdate.getMinutes(), 2)},
s: function(){return pad(jsdate.getSeconds(), 2)},
//u not supported yet
// Timezone
//e not supported yet
//I not supported yet
O: function(){
var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
if (jsdate.getTimezoneOffset() > 0) t = "-" + t; else t = "+" + t;
return t;
},
P: function(){var O = f.O();return (O.substr(0, 3) + ":" + O.substr(3, 2))},
//T not supported yet
//Z not supported yet
// Full Date/Time
c: function(){return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P()},
//r not supported yet
U: function(){return Math.round(jsdate.getTime()/1000)}
};
return format.replace(/[\\]?([a-zA-Z])/g, function(t, s){
if( t!=s ){
// escaped
ret = s;
} else if( f[s] ){
// a date function exists
ret = f[s]();
} else{
// nothing special
ret = s;
}
return ret;
});
}
調用方式:console.log(date('Y-m-d','1585628730'));//很方便的將時間戳轉換成了2020-03-31
date('Y-m-d H:i:s','1585628730');//得到的結果是2020-03-31 12:25:30
4:獲取前幾天、後幾天 當天日期
//獲得日期
function getDay(day){
var today = new Date();
var targetday_milliseconds=today.getTime() + 1000*60*60*24*day;
today.setTime(targetday_milliseconds); //注意,這行是關鍵代碼
var tYear = today.getFullYear();
var tMonth = chek(today.getMonth()+1);
var tDate = chek(today.getDate());
var tHour = chek(today.getHours());
var tMinute = chek(today.getMinutes());
var tSeconds = chek(today.getSeconds());
return tYear+"-"+tMonth+"-"+tDate; //這個地方自定義返回格式
}
//獲得日期2
function GetDateStr(AddDayCount) {
var dd = new Date();
dd.setDate(dd.getDate()+AddDayCount);//獲取AddDayCount天后的日期
var y = dd.getFullYear();
var M = (dd.getMonth()+1)<10?"0"+(dd.getMonth()+1):(dd.getMonth()+1);//獲取當前月份的日期,不足10補0
var d = dd.getDate()<10?"0"+dd.getDate():dd.getDate();//獲取當前幾號,不足10補0
var h = dd.getHours()<10?"0"+dd.getHours():dd.getHours();//獲取當前小時
var m = dd.getMinutes()<10?"0"+dd.getMinutes():dd.getMinutes();//獲取當前分鐘
var s = dd.getSeconds()<10?"0"+dd.getSeconds():dd.getSeconds();//獲取當前秒
return y+"-"+M+"-"+d;
}
function chek(obj){
if(obj<10){
return "0"+obj;
}else{
return obj;
}
}
調用方法:
1:console.log(getDay(-2)) 獲得當前日期前2天 獲得日期2方式一樣
2:console.log(getDay(0))獲取當前日期
3:console.log(getDay(2));獲得當前日期後2天
5:倒計時
//倒計時計算
function GetRTime(sever_time){
var str = "距離方案公佈時間還剩:";
var t =sever_time;
var d=0;
var h=0;
var m=0;
var s=0;
if(t>=0){
d=Math.floor(t/1000/60/60/24);
h=Math.floor(t/1000/60/60%24);
m=Math.floor(t/1000/60%60);
s=Math.floor(t/1000%60);
}
if(sever_time<=0){
$("#localtime").html("今日方案已經公開");
return;
}else{
str = str + h+"小時"+ m+"分鐘"+ s+"秒";
$("#localtime").html(str);
}
window.setTimeout("GetRTime()", 1000);
sever_time=sever_time-1000;
}
6:常用的正則表達式
//去除字符前後空格
function trim(s){
return s.replace(/(^\s*)|(\s*$)/g, "");
}
//校驗空格
function clearKG(str){
var reg=/^\s*$/;
return reg.test(str);
}
function cleartHC(str){//校驗回車換行
var reg = /[\r\n]/g;
return reg.test(str);
}
//判斷手機號
function isMobile(input) {
var mobile_reg = /^1[34578]\d{9}$/;
return mobile_reg.test(input);
}