JS格式化現(xiàn)在距${endTime}的剩余時間
formatRemainTime("2021-8-21 00:00:00"); // 9天 12小時 2分鐘 8秒
/**
* JS格式化現(xiàn)在距${endTime}的剩余時間
* @param {Date} endTime
* @return {String}
*/
function formatRemainTime(endTime) {
var startDate = new Date(); //開始時間
var endDate = new Date(endTime); //結(jié)束時間
var t = endDate.getTime() - startDate.getTime(); //時間差
var d = 0,
h = 0,
m = 0,
s = 0;
if (t >= 0) {
d = Math.floor(t / 1000 / 3600 / 24);
h = Math.floor(t / 1000 / 60 / 60 % 24);
m = Math.floor(t / 1000 / 60 % 60);
s = Math.floor(t / 1000 % 60);
}
return d + "天 " + h + "小時 " + m + "分鐘 " + s + "秒";
}
JS格式化${startTime}距現(xiàn)在的已過時間
formatPassTime("2018-5-17 10:19:00"); // 1小時前
/**
* JS格式化${startTime}距現(xiàn)在的已過時間
* @param {Date} startTime
* @return {String}
*/
function formatPassTime(startTime) {
var currentTime = Date.parse(new Date()),
time = currentTime - new Date(startTime),
day = parseInt(time / (1000 * 60 * 60 * 24)),
hour = parseInt(time / (1000 * 60 * 60)),
min = parseInt(time / (1000 * 60)),
month = parseInt(day / 30),
year = parseInt(month / 12);
if (year) return year + "年前";
if (month) return month + "個月前";
if (day) return day + "天前";
if (hour) return hour + "小時前";
if (min) return min + "分鐘前";
else return '剛剛';
}
JS Base64字符串編碼與解碼
base64Encode("test"); // dGVzdA==
base64Decode(test); // test
/**
* BASE64加密
* @param str
* @returns {string}
*/
function base64Encode(str) {
return btoa(unescape(encodeURIComponent(str)));
}
/**
* BASE64解密
* @param str
* @returns {string}
*/
function base64Decode(str) {
return decodeURIComponent(escape(atob(str)));
}
檢查輸入的字符是否具有特殊字符
checkQuote("dasd1!/,/."); // true
checkQuote("52014sdsda"); // false
/**
* JS檢查輸入的字符是否具有特殊字符
* @param str 字符串
* @returns true 或 false; true表示包含特殊字符 主要用于注冊信息的時候驗(yàn)證
*/
function checkQuote(str) {
var items = new Array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "{", "}", "[", "]", "(", ")");
items.push(":", ";", "'", "|", "\", "<", ">", "?", "/", "<<", ">>", "||", "http://");
items.push("select", "delete", "update", "insert", "create", "drop", "alter", "trancate");
str = str.toLowerCase();
for ( var i = 0; i < items.length; i++) {
if (str.indexOf(items[i]) >= 0) {
return true;
}
}
return false;
}
JS將手機(jī)號格式化暂吉,中間部分以 * 號代替
phoneToStar("16666666666"); // 166****6666
/**
* JS將手機(jī)號格式化纺蛆,中間部分以 * 號代替
* @param phone
* @returns {string | * | void}
*/
function phoneToStar( phone ) {
return phone.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
}
jS獲取地址欄參數(shù)的值
// 若當(dāng)前的URL地址為:a.html?t1=1&t2=2&t3=3
console.log(getUrlParam("t1")); // 1
/**
* JS獲取地址欄參數(shù)的值
* @param name 對應(yīng)的參數(shù)
* @returns {*} 如果有半等,則返回參數(shù)值甩挫,沒有則返回null
*/
function getUrlParam(name){
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
} else {
return null;
}
}
JS時間個性化輸出功能
//可用于列表展示的時間顯示
console.log(timeFormat(new Date())); // 例:剛剛
/**
* JS時間個性化輸出功能
* 1到旦、< 60s, 顯示為“剛剛”
* 2嘹黔、>= 1min && < 60 min, 顯示與當(dāng)前時間差“XX分鐘前”
* 3栽惶、>= 60min && < 1day, 顯示與當(dāng)前時間差“今天 XX:XX”
* 4蛛砰、>= 1day && < 1year, 顯示日期“XX月XX日 XX:XX”
* 5娃肿、>= 1year, 顯示具體日期“XXXX年XX月XX日 XX:XX”
* @param time
* @returns {string}
*/
function timeFormat(time){
var date = new Date(time),
curDate = new Date(),
year = date.getFullYear(),
month = date.getMonth() + 10,
day = date.getDate(),
hour = date.getHours(),
minute = date.getMinutes(),
curYear = curDate.getFullYear(),
curHour = curDate.getHours(),
timeStr;
if(year < curYear){
timeStr = year +'年'+ month +'月'+ day +'日 '+ hour +':'+ minute;
}else{
var pastTime = curDate - date,
pastH = pastTime/3600000;
if(pastH > curHour){
timeStr = month +'月'+ day +'日 '+ hour +':'+ minute;
}else if(pastH >= 1){
timeStr = '今天 ' + hour +':'+ minute +'分';
}else{
var pastM = curDate.getMinutes() - minute;
if(pastM > 1){
timeStr = pastM +'分鐘前';
}else{
timeStr = '剛剛';
}
}
}
return timeStr;
}