JS格式化現(xiàn)在距${endTime}的剩余時間

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;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咕缎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子咸作,更是在濱河造成了極大的恐慌锨阿,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件记罚,死亡現(xiàn)場離奇詭異墅诡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桐智,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門末早,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人说庭,你說我怎么就攤上這事然磷。” “怎么了刊驴?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵姿搜,是天一觀的道長寡润。 經(jīng)常有香客問我,道長舅柜,這世上最難降的妖魔是什么梭纹? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮致份,結(jié)果婚禮上变抽,老公的妹妹穿的比我還像新娘。我一直安慰自己氮块,他們只是感情好绍载,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滔蝉,像睡著了一般击儡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锰提,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天曙痘,我揣著相機(jī)與錄音,去河邊找鬼立肘。 笑死,一個胖子當(dāng)著我的面吹牛名扛,可吹牛的內(nèi)容都是我干的谅年。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼肮韧,長吁一口氣:“原來是場噩夢啊……” “哼融蹂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弄企,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤超燃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拘领,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體意乓,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年约素,在試婚紗的時候發(fā)現(xiàn)自己被綠了届良。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡圣猎,死狀恐怖士葫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情送悔,我是刑警寧澤慢显,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布爪模,位于F島的核電站,受9級特大地震影響荚藻,放射性物質(zhì)發(fā)生泄漏屋灌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一鞋喇、第九天 我趴在偏房一處隱蔽的房頂上張望声滥。 院中可真熱鬧,春花似錦侦香、人聲如沸落塑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憾赁。三九已至,卻和暖如春散吵,著一層夾襖步出監(jiān)牢的瞬間龙考,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工矾睦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晦款,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓枚冗,卻偏偏與公主長得像缓溅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子赁温,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容